[英]How to resize high quality image from gallery to appear in image view?
[英]Android app crashes when rotated twice in image view for high quality images from gallery
仅当高质量图像在图像视图中旋转两次以上时,应用崩溃
private void setupListeners() { rotateLeft.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { *imageBitmap = Util.ImageProcess.rotateImage(imageBitmap, 270);* showImage.setImageBitmap(imageBitmap); } }); rotateRight.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { imageBitmap = Util.ImageProcess.rotateImage(imageBitmap, 90); showImage.setImageBitmap(imageBitmap); } }); flip.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { imageBitmap = Util.ImageProcess.rotateImage(imageBitmap, 180); showImage.setImageBitmap(imageBitmap); } }); continueButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { saveRotatedImage(); Util.MediaScanner.galleryAddPic(getApplicationContext(),imageFile.getAbsolutePath()); startNextActivity(); } });
}
另外,对于旋转:
public static class ImageProcess{
public static Bitmap rotateImage(Bitmap source, float angle) {
Bitmap bitmap = null;
Matrix matrix = new Matrix();
matrix.postRotate(angle);
try {
bitmap = Bitmap.createBitmap(source, 0, 0, source.getWidth(),
source.getHeight(), matrix, true);
} catch (OutOfMemoryError err) {
err.printStackTrace();
}
return bitmap;
在清单文件中的application标签中添加一个属性,以允许largeheap = true可能会帮助您尝试一下。
我终于找到了解决方案。 代码是:
int imageHeight = imageBitmap.getHeight();
int imageWidth = imageBitmap.getWidth();
int newImageheight;
int newImageWidth;
if (imageHeight <= imageWidth){
newImageWidth = 1200;
//getting the length and setting it 1200
newImageheight = (1200*imageWidth)/imageHeight;
//getting image ratio and multiplying it by the length which
//gives width
}
else {
newImageheight = 1200;
newImageWidth = (1200*imageHeight)/imageWidth;
}
imageBitmap = Bitmap.createScaledBitmap(imageBitmap,
newImageheight, newImageWidth, false);
//setting the new scaled image in lower quality
这样可以防止OutOfMemoryError。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.