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 ответов

11 просмотров

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

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

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
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
Карта сайта