- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 JNI
中使用这段代码,而不用返回到 Java
。
我已经将位图操作转换为 JNI(感谢其他 stackoverflow 海报),但这看起来更复杂,因为我不明白如何调用构造函数。
Bitmap bmp;
bmp = ((BitmapDrawable)imgview.getDrawable()).getBitmap();
if (bmp == null || !bmp.isMutable())
Bitmap bmp = Bitmap.createBitmap(w, h, Config.ARGB_8888);
// bitmap manipulations goes here
jclass java_bitmap_class = (env)->GetObjectClass(java_bitmap);
class SkBitmap;
SkBitmap *sk_bitmap = (SkBitmap*)(env)->CallIntMethod(
java_bitmap, (env)->GetMethodID(java_bitmap_class, "ni", "()I"));
// there is more c++ code to manipulate bmp, but it is not relevant to a question
imgview.setImageBitmap(bmp);
最佳答案
好了,掌握了java->jni的翻译其实就很简单了。基本上,您可以在 JNI 方面做您在 Java 中可以做的任何事情。是的,看起来很乱。我决定不在 JNI 中创建位图,而是访问现有位图。
JNIEnv* Env = 0; jobject Obj;
jclass cls = 0, ClassImageView = 0, class_drawable = 0, java_bitmap_class = 0;
jmethodID jcontrol_ui = 0, jfindViewById = 0, jgetBitmap = 0, jgetDrawable = 0;
int *getViewBitmapBuffer(int ID) {
jobject image_view = (jobject) (Env)->CallObjectMethod(Obj, jfindViewById, ID);
// some values can be cached, hence the checks for "(something == 0)"
if (ClassImageView == 0) ClassImageView = (Env)->GetObjectClass(image_view);
if (jgetDrawable == 0) jgetDrawable = (Env)->GetMethodID(ClassImageView, "getDrawable", sig_drawable);
jobject drawable = (jobject) (Env)->CallObjectMethod(image_view, jgetDrawable);
if (class_drawable == 0) class_drawable = (Env)->GetObjectClass(drawable);
if (jgetBitmap == 0) jgetBitmap = (Env)->GetMethodID(class_drawable, "getBitmap", sig_bitmap);
jobject java_bitmap = (jobject) (Env)->CallObjectMethod(drawable, jgetBitmap);
if (java_bitmap_class == 0) java_bitmap_class = (Env)->GetObjectClass(java_bitmap);
class SkBitmap;
SkBitmap *sk_bitmap = (SkBitmap*)(Env)->CallIntMethod(java_bitmap, (Env)->GetMethodID(java_bitmap_class, "ni", "()I"));
SkPixelRef *sk_pix_ref;
sk_pix_ref = (SkPixelRef*)((int*)sk_bitmap)[1];
int *B = (int*) sk_pix_ref->GetPixels();
return B;
}
关于android - 将 createBitmap 从 Java 转换为 JNI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15470975/
我有一个线性布局(宽度 = 填充父级,基本上它填满了设备的整个宽度),它包含 2 个子布局。一个 width=fill_parent 的线性布局(让我们称之为 linear1),第二个是 width=
当我尝试调用 createBitmap 时出现 java.lang.NullPointerException。这是我的代码: board = Bitmap.createBitmap(handler.s
我加载我保存的位图的位数组。 (和 BITMAPINFOHEADER 结构)。 HBITMAP Filemanager::LoadNextImageFromMyFile(HANDLE file) {
在我的应用程序中,我正在从它的颜色代码创建一个位图,如下所示: int width=getImageWidth(); int height=getImageHeight(); int[] array=
这个问题在这里已经有了答案: android - out of memory exception when creating bitmap (9 个回答) 关闭 8 年前。 我试图解决 Androi
我正在使用此代码来压缩图像,但是此代码有时工作正常,但当图像超过 3-4 个时,它会出现内存不足错误。错误发生在 Bitmap.createBitmap 上。 请帮我解决这个问题。 public St
尝试将此 OpenCV java 代码转换为 C#。 OpenCV Android Background Subtraction 大部分时间都在工作,但我在这条线上绊倒了 bmp = Bitmap.c
这个问题在这里已经有了答案: Android View.getDrawingCache returns null, only null (10 个答案) 关闭 7 个月前。 如果我在按钮点击监听器中
我有一个问题,我正在编写缩放位图的代码并使用 Bitmap.createBitmap() 方法创建新的位图,该方法总是返回一个我无法识别的错误。请向我建议有关相同的任何解决方案。 错误堆栈: 02-2
我需要大位图 (6000x2000),所以我创建了一个: Bitmap.Config conf = Bitmap.Config.ARGB_4444; Bitmap bm = Bitmap.create
有时,当我尝试创建模糊位图时,我会收到“空指针异常”。 发生在这段代码中(我最近开始捕捉异常,所以至少它不会使应用程序崩溃): try { using (Bitmap.Config confi
根据文档 Bitmap createBitmap (Bitmap source, int x, int y, int width, int height, Matrix m, boolean filt
您好,我正在创建图像编辑应用程序,我正在为 Canvas 和 ImageView 创建位图 这里我在 imageView 中使用 385kb 尺寸为 2000x2000 的图像文件 这是图片 我的问题
我需要为我在 Direct2D 中处理的光线转换器创建一个像素数组的位图。但是,我无法理解如何使用 CreateBitmap功能。具体来说,我不确定 srcData 参数应该是什么。我很确定/希望它是
为什么会 Bitmap bmp; bmp = Bitmap.createBitmap( 100, 100, Config.RGB_565 ); 曾经返回过高度和宽度为 -1 的位图吗?我在文档中没有看
我正在尝试从 View 中获取位图,因为我想模糊该位图并将其用作后续 Activity 的背景。 Logcat 给我: NullPointerException at android.graphics
我有一个静态方法,它应该加载 strip 图像,并返回带有图像 strip 每个图 block 的 Bitmap[]。我使用了这样的方法,但在桌面 java 中使用 BufferedImages 取得
我想在 JNI 中使用这段代码,而不用返回到 Java。 我已经将位图操作转换为 JNI(感谢其他 stackoverflow 海报),但这看起来更复杂,因为我不明白如何调用构造函数。 Bitmap
我已经在 HTC Desire with Android 2.2 上测试了我的游戏。游戏是 2D 的,具有带有多个位图图像(帧)的自定义 Sprite 。使用方法 Bitmap.createBitma
我正在尝试在 Android 中扩展可缩放的图像查看器以并排使用两个图像。为此,我使用了 Bitmap.createBitmap(int, int, Bitmap.Config)。不幸的是,这似乎会使
我是一名优秀的程序员,十分优秀!