169 похожих чатов

Всем кто не спит, здравствуйте У меня вопрос по NDK Есть функция

инверсии bitmap на Kotlin, она работает хорошо, но довольно медленно
private fun invert(bitmap: Bitmap): Bitmap? {
val width = bitmap.width
val height = bitmap.height
val pixels = width * height

val pixel = IntArray(pixels)
bitmap.getPixels(pixel, 0, width, 0, 0, width, height)

for (i in 0 until pixels) pixel[i] = pixel[i] xor 0x00FFFFFF
bitmap.setPixels(pixel, 0, width, 0, 0, width, height)

return bitmap
}


В ndk у меня получилась вот такая реализация
extern "C"
JNIEXPORT jobject JNICALL
Java_com_music_notationproject_CCode_invertWithC(JNIEnv *env, jobject _, jobject bitmap) {
AndroidBitmapInfo bitmap_info;
AndroidBitmap_getInfo(env, bitmap, &bitmap_info);

if (bitmap_info.format != ANDROID_BITMAP_FORMAT_RGBA_8888) return nullptr;

void *pixels;
AndroidBitmap_lockPixels(env, bitmap, &pixels);
u_long pixelsCount = bitmap_info.height * bitmap_info.width;
auto* pixel = new u_int[pixelsCount];
memcpy(pixel, pixels, sizeof(u_int) * pixelsCount);

for (u_long i = 0; i < pixelsCount; ++ i) pixel[i] = 0xff000000 | ~pixel[i];

memcpy(pixels, pixel, sizeof(u_int) * pixelsCount);
AndroidBitmap_unlockPixels(env, bitmap);

delete[] pixel;
return bitmap;
}
Она отображает картину со скриншотов, если убрать pixel[i] = 0xff000000 | ~pixel[i];, то изображение отображается верно, но без инверсии
Где я ошибся?

2 ответов

12 просмотров

xor в с++ вроде был ^

тебе просто нужен ColorMatrixColorFilter

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта