我有Imageview
缩放和旋转(我使用过multitouch zooming
)。那么我怎样才能获得只有可见内容的位图(我的意思是当我缩放image
时,位图的一部分可能会出现在屏幕外。所以,我想要的是可见的bitmap
屏幕上)。那么api
中是否有内置功能可以从一个大的位图创建一个小位图?或者是否有使用x,y
坐标裁剪图像的功能?实际上我希望缩放或旋转的部分转到下一个activity
答案 0 :(得分:9)
如果您知道所有比例和旋转值,则可以使用这些值创建Matrix,并通过Bitmap.createBitmap()方法将其应用于位图。
例如:
Bitmap original = ((BitmapDrawable) yourImageView.getDrawable()).getBitmap();
Matrix matrix = new Matrix();
matrix.setRotate(degrees);
matrix.postScale(scale, scale);
Bitmap result = Bitmap.createBitmap(original, 0, 0, original.getWidth(), original.getHeight(), matrix, true);
更快,但也许不是那么漂亮的解决方案是创建一个位图并将当前可见的视图绘制到:
Bitmap result = Bitmap.createBitmap(yourImageView.getWidth(), yourImageView.getHeight(), Bitmap.Config.RGB_565);
Canvas c = new Canvas(result);
yourImageView.draw(c);
之后,结果应该包含您在屏幕上看到的内容。