Я пытаюсь скопировать некоторое программное обеспечение для фильтрации изображений на платформе Android. Настольная версия работает с bmps, но вылетает в файлах png.
Когда я прихожу к xOr двум изображениям (32-битные дюймы каждого соответствующего пикселя), я получаю очень разные результаты для двух частей программного обеспечения.
Я уверен, что мой код не ошибается, поскольку это такая простая задача, но вот она;
const int aMask = 0xFF000000;
int xOrPixels(int p1, int p2) {
return (aMask | (p1 ^ p2) );
}
Определение библиотеки JAI, используемой настольным программным обеспечением Java, можно найти здесь и состояния;
The destination pixel values are defined by the pseudocode:
dst[x][y][b] = srcs[0][x][y][b] ^ srcs[1][x][y][b];
Где b для группы (то есть R, G, B).
Есть мысли? У меня похожая проблема с AND и OR.
Вот изображение с двумя исходными изображениями, которые xOr'd внизу на Android использует png. Тот же файл, что и растровое изображение xOr'd, дает мне растровое изображение, заполненное 0xFFFFFFFF (белым), без пикселей вообще. Я проверил двоичные значения Android ap, и мне кажется, что это правильно ....
Гав
NB. Когда я говорю (то же самое 32-битное представление ARGB), я имею в виду, что android позволяет вам декодировать файл png в этот формат. Хотя это может дать место для некоторой ошибки (png без потерь?), Я получаю совершенно разные цвета на выходе.