我想从带有vectordrawable资源的imageview获取位图,该资源在X或Y轴上旋转,但位图的质量不好。没有旋转的质量或" setRotation"很好但是当我使用" setRotationX"或" setRotationY"或相机旋转,位图质量下降。这个问题就在我设置" setImageResource"对于vectordrawable,jpeg或png图像没有这个问题。我认为这是vectordrawable的错误...
这是我获取位图的代码:
itemBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(itemBitmap);
cv.save();
imageView.draw(canvas);
cv.restore();
答案 0 :(得分:0)
如果您尝试从imageView获取位图,则位图的质量更有可能降低。如果图像被旋转,则由于位图需要缩小,因此质量会更低。
您可以尝试以下方法:
imageView.setDrawingCacheEnabled(false);
后跟Bitmap bitmap = imageView.getDrawingCache();
答案 1 :(得分:0)
Pl在以下地址参考kc Ochibili的问题答案:
How to Get Pixel Colour in Android?
我在我的VectorDrawable上使用相同的(我在下面显示的内容)。我正在给出代码细节,就像叙述一样,因为我是从我的手机发布的,并且存在缩进问题,系统在stackoverflow上不接受缩进。
首先将一个监听器附加到ImageView上 myImageView.setOnTouchListener(new View.OnTouchListener(){ 然后覆盖以下方法: 公共布尔值onTouch(视图视图,MotionEvent motionEvent){ 然后从视图参数接收到IageView ImageView img =(ImageView)视图; 然后在图像视图上执行以下操作: Img.setDrawingCacheEnablef(真); 然后从中获取位图 位图imgbmp = Bitmap.createBitmap(img.getDrawingCache()); 在img上立即setDrawingCacheEnabled(false)。
你有位图。