草庐IT

glTexImage2D 的 android 位图像素格式

我正在尝试使用Bitmap类从Java加载纹理以与NDKOpenGL一起使用。它可以工作,但我在像素格式方面遇到了问题。首先,在Java中,我像这样从assets文件夹加载位图:Bitmapbitmap=BitmapFactory.decodeStream(amgr.open(path));returnbitmap.copy(Bitmap.Config.ARGB_8888,false);位图配置没有RGBAchannel顺序选项。[JNI事情发生在这里]使用GLES1,然后我像这样缓冲纹理:glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,w,h,0,GL_RG

Android:将图像对象转换为位图不起作用

我正在尝试将图像对象转换为位图,但它返回null。image=reader.acquireLatestImage();ByteBufferbuffer=image.getPlanes()[0].getBuffer();byte[]bytes=newbyte[buffer.capacity()];BitmapmyBitmap=BitmapFactory.decodeByteArray(bytes,0,bytes.length,null);图像本身是jpeg图像,我可以把它保存到磁盘上,我想转换成位图的原因是我想在保存到磁盘之前做最后的旋转。在ClassBitmapFactory中挖掘我看

android - 将 ImageProxy 转换为位图

因此,我想探索新的GoogleCameraAPI-CameraX。我想做的是每秒从相机中获取一张图像,然后将其传递给一个接受位图以用于机器学习目的的函数。我阅读了有关CameraXImageAnalyzer的文档:TheimageanalysisusecaseprovidesyourappwithaCPU-accessibleimagetoperformimageprocessing,computervision,ormachinelearninginferenceon.TheapplicationimplementsanAnalyzermethodthatisrunoneachfra

java - 来自字符串的位图

有没有办法或如何使用Java获取字符串并从中创建位图以进行Android开发?我查看了用于位图的javaapi,但找不到任何东西 最佳答案 可以像这样使用bitmapfactory的decodebytearray方法byte[]imageAsBytes=Base64.decode(myImageData.getBytes());Bitmapbp=BitmapFactory.decodeByteArray(imageAsBytes,0,imageAsBytes.length);其中myImageData是base64字符串。如果您有一

android - 在 Android 上向视频添加位图掩码?

我一直在寻找有关将图像添加到视频的东西,但我没有找到我想要的东西。我想在视频的每一帧中添加一个位图/图像掩码(可以录制或来自SD),保持原始声音,并将视频与图像一起保存到SD。有人知道如何在Android中完成吗?感谢 最佳答案 创建一个扩展SurfaceView的类公共(public)类PaintSurface扩展SurfaceView{....在draw()函数中添加代码@Overridepublicvoiddraw(Canvascanvas){super.draw(canvas);canvas.drawBitmap(bitma

尝试读取解码的 Base64 jpeg 时,Android 位图工厂返回 null

我使用HTTPGET调用从Web服务检索了一张jpeg图像,我需要在ImageView中显示它,但它是用Base64编码的。因此,我使用如下代码进行转换:byte[]bytes=Base64.decode(imageStringInBase64,Base64.DEFAULT);Bitmapbmp=BitmapFactory.decodeByteArray(bytes,0,bytes.length);但是,我收到错误:---SkImageDecoder::Factoryreturnednull当登录到控制台时,imageStringInBase64如下所示:data:image/jpeg

android - 使用位图和 Volley 查看寻呼机内存泄漏

我正在使用ViewPager在我的应用程序中显示从网络下载的图像。图像的数量可以是5到20。我正在使用Volley库来进行网络操作。该应用程序之前没有占用太多内存,但现在在添加View寻呼机后,该应用程序占用了大量内存,每次我打开此Activity时,堆中使用的内存都会增加(从日志消息中检查)。我还使用Eclipse内存分析器来检查泄漏的位置,它肯定是位图和此Activity的多个实例。肯定有泄漏,因为这个Activity没有得到GC,一些引用阻止它被垃圾收集。我已经在此处添加了View寻呼机的实现。publicclassViewPagerAdapterextendsPagerAdap

android - 加载位图时出现 OutOfMemoryError

我正在创建的应用程序需要从我们的服务器中提取大量图像,并显示在页面上。用户可以进入几个不同的类别,每个类别都有自己的图像。问题是在连续进入2-3个类别(取决于这些类别中有多少图像)后,应用程序没有更多内存并且无法在不崩溃的情况下显示位图。我想做的是每次用户进入新类别时清除内存,这样旧类别的图像就不会再存储在内存中,从而为相关类别的图像释放空间。我不确定这是否是一个好方法,或者如果是的话,我什至不确定该怎么做。如果有人有更好的解决方案,请告诉我。一个想法是一次只加载约20张图片,并等到用户滚动到底部再加载更多图片,但是由于我们的客户需要付费才能在应用程序上显示他们的图片,这会导致某些图片

java - 在 android 中重绘位图的更快方法?

我正在为OCR处理图像,我需要更改位图中一堆像素的颜色。有没有比setPixel和getPixel更快的方法?目前我只是用一种方法做一个for循环,该方法检查输入与一堆RGB值,如果匹配则返回true。非常感谢!Bitmapimg=myImage.copy(Bitmap.Config.ARGB_8888,true);;for(intw=0;w 最佳答案 只是想跟进并发布代码,看看是否有人通过搜索找到了它。我在问题中的代码平均耗时3.4秒,下面使用Gabe的建议的代码耗时不到200毫秒。我还添加了一个长度变量,因为我读到不调用arra

android - 无需压缩即可将位图编码和解码为字节数组

我试图在不使用bitmap.compress的情况下将位图编码和解码为字节数组,但是当我解码数组时,BitmapFactory.decodeByteArray总是返回NULL编码方法如下:publicbyte[]ToArray(Bitmapb){intbytes=b.getByteCount();ByteBufferbuffer=ByteBuffer.allocate(bytes);//Createanewbufferb.copyPixelsToBuffer(buffer);//Movethebytedatatothebuffer//DECODEStringimgString=Base