我正在使用自定义ImageView。在它的onDraw中,我使用画布进行一些处理,就像绘制线,基于用户触摸的位图。
要在用户想要保存图像时保存生成的快照,我们使用drawingCache
imageView.setDrawingCacheEnabled(true;
Bitmap.createBitmap(imageView.getDrawingCache(), 0, 0,
imageView.getHeight(), imageView.getWidth(),
matrix, true).compress(CompressFormat.JPEG, 95,
new FileOutputStream(file));
当然,我可以使用它来获取实际图像,同时用户按下保存但图像不包含在imageView上完成的任何处理。
Bitmap bmp = ((BitmapDrawable)imageView.getDrawable()).getBitmap();
Bitmap.createBitmap(bmp, 0, 0,
bmp.getWidth(), bmp.getHeight(),
matrix, true).compress(CompressFormat.JPEG, 95,
new FileOutputStream(file));
问题: 保存的图像大小是imageView的大小,全屏但取决于设备。对于较小屏幕尺寸的手机,它可以降至240 X 320.
问题:
一个。无论设备屏幕尺寸如何,都可以获得合适的尺寸图像吗?
湾是否可以直接在Custom ImageView中使用的图像上进行图像处理?
感谢您的期待!
有什么想法吗?
答案 0 :(得分:0)
也许替代方法是使用Canvas类进行一些绘图和图像显示:javadoc: android.graphics.Canvas。
当图像需要经常“刷新”时,ImageView类不是最好的。
如果您决定坚持使用ImageView,请不要使用ImageView的尺寸创建位图。保留图像的纵横比,并根据您需要的大尺寸构建位图。 imageView将缩小它(如果需要)以适应屏幕。
答案 1 :(得分:0)
您可以使用
Bitmap.createScaledBitmap(Bitmap b, int newWidth, int newHieght, boolean filter);
并从资源中获取位图
Bitmap image = BitmapFactory.decodeResource(..)
然后你可以使用
ImageView.setImageBitmap(Bitmap bm)
将新位图设置为imageview