我想將Bitmap
縮放到與運行時相關的寬度和高度,其中縱橫比保持不變,並且Bitmap
填充整個寬度並垂直居中圖像,裁剪多餘部分或填充與0個alpha像素的差距。按比例縮放的位圖保持寬高比
我目前通過創建所有的α0的像素的Bitmap
和在它上面繪製圖像Bitmap
,縮放的確切指定的寬度和保持縱橫比重畫位圖自己,然而,它最終失去/擰緊像素數據。
這裏是我如何做它:
Bitmap background = Bitmap.createBitmap((int)width, (int)height, Config.ARGB_8888);
float originalWidth = originalImage.getWidth(), originalHeight = originalImage.getHeight();
Canvas canvas = new Canvas(background);
float scale = width/originalWidth;
float xTranslation = 0.0f, yTranslation = (height - originalHeight * scale)/2.0f;
Matrix transformation = new Matrix();
transformation.postTranslate(xTranslation, yTranslation);
transformation.preScale(scale, scale);
canvas.drawBitmap(originalImage, transformation, null);
return background;
是否有出有圖書館或一些更好的代碼,可以做到這一點更好?我希望圖像看起來儘可能清晰,但我知道我的功能不會提供很好的結果。
我知道我可以通過使用整數縮放,而不是浮點縮放,但我需要的寬度是100%填充保持良好。
此外,我知道ImageView
的Gravity.CENTER_CROP
能力,但是,它也使用整數縮放,所以它切斷了圖像的寬度,當它不應該。
那麼,規模不能改變,因爲我需要寬度被填充,它也不能裁剪寬度。然而,油漆做到了。謝謝!你可以編輯答案切換回我的縮放? – RileyE
但如果縮減它裁剪圖像 –