【问题标题】:BitmapFactory decodeByteArray crops ImageBitmapFactory decodeByteArray 裁剪图像
【发布时间】:2017-06-27 10:05:52
【问题描述】:

我的 Android 应用程序遇到了一个奇怪的问题。 我有一个自定义的相机屏幕来拍摄文件。

正如您在图片中看到的,Galaxy S4 (Android 5.0.1) 保存的图像与相机屏幕相同,但在 Galaxy S7 (Android 6.0.1) 中,图像是从顶部和底部裁剪的。

S4 相机屏幕

S4 结果图片

S7 相机屏幕

S7 结果图片

我的相关代码块是; "onPictureTaken"

 @Override
public void onPictureTaken(byte[] data, Camera camera) {

    if (data == null) {
        return;
    }

    Bitmap bmp = Tools.getBitmap(data);

    super.onBackPressed();        
}

“获取位图”

public class Tools {
/*.....*/
    public static Bitmap getBitmap(byte[] data){
/*.....*/
        Bitmap unscaledBitmap = BitmapFactory.decodeByteArray(data, 0, data.length);

        return unscaledBitmap;
    }
}

谁能解释为什么会这样?

提前致谢

【问题讨论】:

  • 我相信这是因为相机预览分辨率与其输出分辨率不同。

标签: android bitmap android-camera crop


【解决方案1】:

经过多次尝试,我发现了上面提到的 Naveen 关于输出图片大小的问题,并用 setPictureSize() 解决了它

 Camera.Size size=getBestPreviewSize(display.getHeight(), display.getWidth(), parameters);
 parameters.setPreviewSize(size.width, size.height);
 parameters.setPictureSize(size.width, size.height);
 this.camera.setParameters(parameters);

【讨论】:

    【解决方案2】:

    我不认为 S4 图像与屏幕相同,底部和左侧有灰色区域。

    基本上,如果您裁剪的图像与屏幕比例不同,则图像不会填满整个屏幕。然后,您可以显示空白区域(您正在显示的灰色区域)或将其居中裁剪,这将剪切图像的侧面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-22
      • 1970-01-01
      • 2022-01-23
      • 2023-04-02
      相关资源
      最近更新 更多