(На прошлой неделе я написал три сообщения на SO о проекте Java, над которым я работаю. Я чувствую себя виноватым, но, черт возьми, ваши ответы потрясающие.)
Вот фрагмент кода на C #:
Bitmap bitmap = ...
int dstStride = bitmap.Stride;
byte* bdst = (byte*)bitmap.Scan0;
Я хочу сделать эквивалентный алгоритм на Java. Я начинаю думать, что это невозможно, основываясь на других похожих вопросах .
Я действительно могу скопировать информацию о шагах моего растрового изображения, но, конечно, byte*
почти невозможно воспроизвести. Что произойдет позже, так это то, что есть цикл for
, который управляет растровым изображением, а именно:
bdst[x * 3 + y * dstStride + 2] = (byte)(alpha * bsrc[dx * 3 + L * srcStride + 2]);
(x & y - итераторы в цикле)
Естественно, я не могу просто сделать bdst байтовым массивом, потому что это не имеет смысла. Согласно этой совершенно потрясающей статье , Scan0 - это «[t] адрес в памяти фиксированного массива данных».
И, судя по вышеприведенному SO сообщению, это невозможно в Java. Подтвердить / опровергнуть?