我正在制作一个绘制图像的工具。我正在使用自定义imageview绘制它并将新图像保存到手机存储中。 问题在于保存的图像分辨率。对于低分辨率图像,最终图像分辨率就是这样。但对于高分辨率图像,我在绘图后从ImageView获取的最终图像,当保存到存储时质量较差,因此图像质量变差。
建议我在绘制之后如何保存高分辨率图像。
这是代码行。
Bitmap signOffBmp = Bitmap.createBitmap(mDrawingView.getDrawingCache());
其中
mDrawingView
是具有绘图功能和
的自定义imageviewsignOffBmp
是低分辨率的最终图像位图。
此外,我发现链接似乎解决了我的问题,但事实并非如此 Improve image quality while using getDrawingCache - android 谢谢
答案 0 :(得分:0)
您应该创建位图from a resource,而不是从缩放到屏幕分辨率后的视图绘图缓存中创建。
Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.my_drawable);
分辨率是每个显示尺寸的像素数。例如,如果您绘制500 * 500像素的图像以适合2" * 2"方块,则分辨率为250ppi(每英寸像素数)。 如果您在10" * 10"上绘制1000 * 1000像素的图像。方块,则分辨率为100ppi。
当Android在屏幕上绘制位图时,它仅缓存实际屏幕像素的数量,屏幕分辨率通常在170ppi和340ppi之间变化。
答案 1 :(得分:0)
这是您问题的根源:
Bitmap signOffBmp = Bitmap.createBitmap(mDrawingView.getDrawingCache());
您正尝试将自定义ImageView中的内容绘制到最终位图上。执行此操作时,您可以提高分辨率。您将获得与Custom ImageView相同的分辨率。
如果要在保存最终图像时控制分辨率,则需要执行以下操作:
Bitmap
。Bitmap
加载到ImageView上Canvas
上的所有内容。Bitmap
。Canvas
并将Bitmap
附加到其中。Canvas
而不是ImageView
上执行自定义绘图。您可能需要更改画布的矩阵,以便所有内容都符合规模。Bitmap
保存到存储空间。我不确定您应用的当前架构是如何的,因此您需要调整代码才能实现此目的。