Android NDK'da JNI Graphics adlı bir kütüphane var. O nedir? C/C++ ile OpenGL ES için görüntüleri yüklemek için kullanabilir miyim?JNI Graphics nedir veya nasıl kullanılır?
cevap
jnigraphics
kitaplığı, android.bitmap.Graphics
sınıfından (tabii ki Java'da) C/C++ içindeki bitmap arabelleklerine erişmek için kullanılabilir. Bu altında NDK birlikte gelen belgelerde daha ayrıntılı olarak tanımlanıyor:
android-ndk-r5b/docs/STABLE-APIS.html
örneğin için görüntü yüklemek için kullanılabilecek
C/C++ içinde OpenGL ES, ancak bir kitaplığa doğrudan erişim sağlamak için bu kitaplığa bir jobject
vermek için bazı işler yapmak zorunda. Bu arabelleği glTexImage2D()
aracılığıyla OpenGL'ye geçirebilirsiniz.
#include <android/bitmap.h>
void MyJniMethod(JNIEnv *env, jobject obj, jobject bitmap) {
AndroidBitmapInfo info;
uint32_t *pixels;
int ret;
AndroidBitmap_getInfo(env, bitmap, &info);
if(info.format != ANDROID_BITMAP_FORMAT_RGBA_8888) {
LOGE("Bitmap format is not RGBA_8888!");
return false;
}
AndroidBitmap_lockPixels(env, bitmap, reinterpret_cast<void **>(&pixels));
// Now you can use the pixel array 'pixels', which is in RGBA format
}
Tut: yerli yöntem şöyle bakabilirsiniz
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
...
BitmapFactory.Options options = new BitmapFactory.Options();
options.inScaled = false;
Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(),
R.drawable.myimage, options);
MyJniMethod(bitmap); // Should be static in this example
O:
Öncelikle, kazanmak ve bu gibi doğal yönteme geçebilir bir Java Bitmap
nesne, gerek Piksel tamponu ile işiniz bittiğinde AndroidBitmap_unlockPixels()
numaralı telefonu aramanız gerektiğini ve bu örneğin hiç bir hata olup olmadığını kontrol etmemelisiniz. Sid Datta sorusuna ilişkin
Güncelleme: Sen çıktı resim biçimi Yukarıdaki seçeneklere bu ekleyerek bekliyorsanız ne şekilde belirtebilirsiniz:
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
bir durum vardır nerede çıktı görüntüsü olacak hala, JNI'de bilinmeyen bir formatla sonuçlanır. Bu sadece GIF'lerle gerçekleşiyor. BitmapFactory.decodeResource()
çağırdıktan sonra gerekirse uygun biçimine dönüştürme yapabilirsiniz:
if (bitmap.getConfig() != Bitmap.Config.ARGB_8888) {
Bitmap reformatted_bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, false);
bitmap.recycle(); /* reduce memory load in app w/o waiting for GC */
bitmap = reformatted_bitmap;
}
- 1. JNI
- 2. JNI
- 3. Pencere başlığını JNI veya JNA ile nasıl okuyabilirim?
- 4. Gloss Graphics kitaplığını çalıştırmaya çalışmak
- 5. PreferenceActivity nasıl kullanılır veya "bulunur"?
- 6. JNI (C++)
- 7. CodeMirror - addWidget nedir ve nasıl kullanılır?
- 8. jni ve Android.mk nasıl oluşturulur?
- 9. JNI/C kütüphanesinde nasıl hata ayıklanır?
- 10. Java Graphics xor modunu devre dışı bırakma
- 11. Bu Core Graphics kod parçacığı güvenli mi?
- 12. org.eclipse.wst.common.component nedir ve karınca için nasıl kullanılır
- 13. JPanel Graphics takas ve yeniden boyama?
- 14. R: wordcloud graphics/png için başlık ekle
- 15. Android JNI APK Paketleme
- 16. Android JNI programından çağrı yapılacak Log API nedir?
- 17. Strophe nedir ve JQuery ile nasıl kullanılır?
- 18. Android'de sharedUserId nedir ve nasıl kullanılır?
- 19. dSYM nedir ve nasıl kullanılır? (iOS SDK)
- 20. Linux Graphics C programında aşağıdaki hatayı nasıl çözebilirim?
- 21. Delphi - JNI Hatası
- 22. Paralel olarak nasıl kullanılır "yazdır" veya "kedi"
- 23. GLIBC nedir? Ne için kullanılır?
- 24. Jni Referans Tablosu taşması
- 25. JNI programında jstring dönüşü
- 26. Android jni GetMethID kilitlenme
- 27. Java JNI - Java'da C++
- 28. Mac + jni + java
- 29. JNI NewByteArray bellek sızıntısı
- 30. Delphi ile programlama JNI
o Piksel Android'in tüm sürümlerinde, RGBA formatında paketlenmiş olduğunu garantisi var mı? –