我正在尝试使用最大相机尺寸拍摄照片,然后将其缩放到1080x1776,质量为80%并将位图保存为.jpeg。即使我非常确定我是以错误的方式旋转矩阵,因为获得1080x1776工作的唯一方法是在createScaledBitmap中反过来设置参数,此代码适用于我的Nexus 5.
当我在One Plus上尝试相同的代码时,我的分辨率非常低。我不明白为什么因为代码适用于具有相似规格的Nexus 5,所以它不应该适用于一个加号。在One Plus上,图片以正确的方式缩放1080x1776,但质量很差。
有谁知道为什么?相同的代码,新手机,不同的结果?我也尝试过Nexus 7上的代码,但我确实有不好的照片。为什么这段代码会在我的nexus 5上运行?
Bitmap image = BitmapFactory.decodeByteArray(data, 0, data.length);
Bitmap imageScaled = Bitmap.createScaledBitmap(image, 1776, 1080, true);
// Override Android default landscape orientation and save portrait
Matrix matrix = new Matrix();
if (currentCameraId == Camera.CameraInfo.CAMERA_FACING_FRONT)
{
float[] mirrorY = { -1, 0, 0, 0, 1, 0, 0, 0, 1};
Matrix matrixMirrorY = new Matrix();
matrixMirrorY.setValues(mirrorY);
matrix.postConcat(matrixMirrorY);
}
matrix.postRotate(90);
Bitmap rotatedScaledImage = Bitmap.createBitmap(imageScaled, 0,
0, imageScaled.getWidth(), imageScaled.getHeight(),
matrix, true);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
rotatedScaledImage.compress(Bitmap.CompressFormat.JPEG, 80, bos);