为了账号安全,请及时绑定邮箱和手机立即绑定

Android裁剪中心位图

Android裁剪中心位图

白猪掌柜的 2019-08-15 15:20:00
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() 
     );}


查看完整回答
反对 回复 2019-08-15
?
慕村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);

来自:ThumbnailUtils文档

public static Bitmap extractThumbnail(Bitmap source,int width,int height)

在API级别8中添加创建所需大小的居中位图。

参数source原始位图源宽度目标宽度高度目标高度

在使用接受的答案时,我有时会出现内存错误,并且使用ThumbnailUtils为我解决了这些问题。此外,这更清洁,更可重复使用。


查看完整回答
反对 回复 2019-08-15
?
白板的微信

TA贡献1883条经验 获得超3个赞

你有没有考虑过这样做layout.xml?你可以设置你ImageViewScaleTypeandroid:scaleType="centerCrop",并在设定的图像的尺寸ImageViewlayout.xml


查看完整回答
反对 回复 2019-08-15
  • 3 回答
  • 0 关注
  • 457 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信