我在运行我使用renderscript的应用程序时崩溃了。不幸的是,logcat没有给出任何具体的细节。
b = Bitmap.createBitmap(ib.getWidth(), ib.getHeight(),ib.getConfig());
Allocation mInAllocation = Allocation.createFromBitmap(mRS, inBitmap,
Allocation.MipmapControl.MIPMAP_NONE,Allocation.USAGE_SHARED);
Allocation mOutAllocation2 = Allocation.createFromBitmap(mRS,
outBitmap, Allocation.MipmapControl.MIPMAP_NONE,
Allocation.USAGE_SHARED);...execute是.rs文件中的一个算法,稍后执行以下操作
mOutAllocation2.copyTo(outBitmap)`;当我使用USAGE_SCRIPT标志而不是USAGE_SHARED进行mOutAllocation2时,相同的代码序列运行得非常好。
对为什么会发生这种事有帮助吗?
我在android中看到,如果分配是USAGE_SHARED类型的,那么从分配到位图的复制操作就会更快(见上文)。目前,我正在看到从分配到位图的副本,这些拷贝运行在secs中,以获得体面的大图像(8MP及以上)
目前我正在使用Nexus 10 (Android4.3)。
发布于 2013-09-10 01:36:18
首先,您需要使用Allocation.USAGE_SCRIPT \ Allocation.USAGE_SHARED。如果可能,createFromBitmap(RenderScript,Bitmap)将为您设置。
其次,如果您的复制时间花了那么长时间,您可能也看到了脚本的执行。脚本执行是异步的,因此copyTo(位图)的挂钟时间可能包含的不仅仅是副本。
发布于 2017-11-02 12:51:27
我面临着同样的问题,我解决了这个问题,这个问题的发生是因为我的位图配置不是Bitmap.Config.ARGB_8888,我们应该在应用模糊之前把它转换成ARGB_8888。
Bitmap U8_4Bitmap;
if (yourBitmap.getConfig() == Bitmap.Config.ARGB_8888) {
U8_4Bitmap = yourBitmap;
} else {
U8_4Bitmap = yourBitmap.copy(Bitmap.Config.ARGB_8888, true);
}https://stackoverflow.com/questions/18709301
复制相似问题