Android裁剪中心位图我有正方形或矩形的位图。我采取最短的一面,做这样的事情:int value = 0;if (bitmap.getHeight() <= bitmap.getWidth()) {
value = bitmap.getHeight();} else {
value = bitmap.getWidth();}Bitmap finalBitmap = null;finalBitmap = Bitmap.createBitmap(bitmap, 0, 0, value, value);然后我使用它将它缩放到144 x 144位图:Bitmap lastBitmap = null;lastBitmap = Bitmap.createScaledBitmap(finalBitmap, 144, 144, true);问题是它裁剪原始位图的左上角,任何人都有代码来裁剪位图的中心?
3 回答
翻阅古今
TA贡献1780条经验 获得超5个赞
这可以通过以下方法实现: Bitmap.createBitmap(source,x,y,width,height)
if (srcBmp.getWidth() >= srcBmp.getHeight()){ dstBmp = Bitmap.createBitmap( srcBmp, srcBmp.getWidth()/2 - srcBmp.getHeight()/2, 0, srcBmp.getHeight(), srcBmp.getHeight() );}else{ dstBmp = Bitmap.createBitmap( srcBmp, 0, srcBmp.getHeight()/2 - srcBmp.getWidth()/2, srcBmp.getWidth(), srcBmp.getWidth() );}
慕村9548890
TA贡献1884条经验 获得超4个赞
虽然上面的大多数答案提供了一种方法来实现这一点,但已经有一种内置的方法来实现这一点,它是一行代码(ThumbnailUtils.extractThumbnail()
)
int dimension = getSquareCropDimensionForBitmap(bitmap);bitmap = ThumbnailUtils.extractThumbnail(bitmap, dimension, dimension);...//I added this method because people keep asking how //to calculate the dimensions of the bitmap...see comments belowpublic int getSquareCropDimensionForBitmap(Bitmap bitmap){ //use the smallest dimension of the image to crop to return Math.min(bitmap.getWidth(), bitmap.getHeight());}
如果您希望回收位图对象,可以传递使其成为的选项:
bitmap = ThumbnailUtils.extractThumbnail(bitmap, dimension, dimension, ThumbnailUtils.OPTIONS_RECYCLE_INPUT);
public static Bitmap extractThumbnail(Bitmap source,int width,int height)
在API级别8中添加创建所需大小的居中位图。
参数source原始位图源宽度目标宽度高度目标高度
在使用接受的答案时,我有时会出现内存错误,并且使用ThumbnailUtils为我解决了这些问题。此外,这更清洁,更可重复使用。
- 3 回答
- 0 关注
- 457 浏览
添加回答
举报
0/150
提交
取消