猿问

Android裁剪中心位图

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);

问题是它裁剪原始位图的左上角,任何人都有代码来裁剪位图的中心?


白猪掌柜的
浏览 458回答 3
3回答

翻阅古今

这可以通过以下方法实现:&nbsp;Bitmap.createBitmap(source,x,y,width,height)if&nbsp;(srcBmp.getWidth()&nbsp;>=&nbsp;srcBmp.getHeight()){ &nbsp;&nbsp;dstBmp&nbsp;=&nbsp;Bitmap.createBitmap( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srcBmp,&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srcBmp.getWidth()/2&nbsp;-&nbsp;srcBmp.getHeight()/2, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srcBmp.getHeight(),&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srcBmp.getHeight() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);}else{ &nbsp;&nbsp;dstBmp&nbsp;=&nbsp;Bitmap.createBitmap( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srcBmp, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srcBmp.getHeight()/2&nbsp;-&nbsp;srcBmp.getWidth()/2, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srcBmp.getWidth(), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srcBmp.getWidth()&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);}

慕村9548890

虽然上面的大多数答案提供了一种方法来实现这一点,但已经有一种内置的方法来实现这一点,它是一行代码(ThumbnailUtils.extractThumbnail())int&nbsp;dimension&nbsp;=&nbsp;getSquareCropDimensionForBitmap(bitmap);bitmap&nbsp;=&nbsp;ThumbnailUtils.extractThumbnail(bitmap,&nbsp;dimension,&nbsp;dimension);...//I&nbsp;added&nbsp;this&nbsp;method&nbsp;because&nbsp;people&nbsp;keep&nbsp;asking&nbsp;how&nbsp;//to&nbsp;calculate&nbsp;the&nbsp;dimensions&nbsp;of&nbsp;the&nbsp;bitmap...see&nbsp;comments&nbsp;belowpublic&nbsp;int&nbsp;getSquareCropDimensionForBitmap(Bitmap&nbsp;bitmap){ &nbsp;&nbsp;&nbsp;&nbsp;//use&nbsp;the&nbsp;smallest&nbsp;dimension&nbsp;of&nbsp;the&nbsp;image&nbsp;to&nbsp;crop&nbsp;to &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Math.min(bitmap.getWidth(),&nbsp;bitmap.getHeight());}如果您希望回收位图对象,可以传递使其成为的选项:bitmap&nbsp;=&nbsp;ThumbnailUtils.extractThumbnail(bitmap,&nbsp;dimension,&nbsp;dimension,&nbsp;ThumbnailUtils.OPTIONS_RECYCLE_INPUT);来自:ThumbnailUtils文档public static Bitmap extractThumbnail(Bitmap source,int width,int height)在API级别8中添加创建所需大小的居中位图。参数source原始位图源宽度目标宽度高度目标高度在使用接受的答案时,我有时会出现内存错误,并且使用ThumbnailUtils为我解决了这些问题。此外,这更清洁,更可重复使用。

白板的微信

你有没有考虑过这样做layout.xml?你可以设置你ImageView的ScaleType来android:scaleType="centerCrop",并在设定的图像的尺寸ImageView内layout.xml。
随时随地看视频慕课网APP

相关分类

Android
我要回答