【问题标题】:Android Image Rotated and ResizedAndroid图像旋转和调整大小
【发布时间】:2014-02-09 17:22:07
【问题描述】:

我到处寻找解决方案,但无法使用任何有用的东西。我将 SurfaceView 和 FrameLayout 用于自定义应用内摄像头。我有一个调用“mCamera.takePicture()”函数的按钮。在回调中,我将图片原样保存;问题是图片被旋转和翻转,并以奇怪的比例缩放。

我知道这主要是因为我将相机参数的 setPreviewSize 设置为最佳尺寸,并使用 mCamera.setDisplayOrientation() 对其进行了旋转。预览看起来很漂亮。但是当我拍照并保存时,它就会变得一团糟。

Camera.Parameters cp = mCamera.getParameters();
Size theSize = getOptimalPreviewSize(opt, w, h);
cp.setPreviewSize(theSize.width, theSize.height);
mCamera.setDisplayOrientation(90);
mCamera.setParameters(cp);

以上代码写在surfaceChanged函数中。

如何使保存的图片在预览中显示?

相机预览中显示的屏幕截图。大小精细,旋转精细:

这是在拍照之后。看看显示器、CD 集和插头。它被压扁了,显示器看起来像一个波浪:

【问题讨论】:

  • 嘿,您能告诉我您尝试了哪些方法以及您是否解决了问题?请您回复。

标签: android mobile camera preview


【解决方案1】:

pictureTaken() 中返回的图像不受 Camera.setDisplayOrientation() 的影响。它是 Jpeg 压缩格式,因此您可以通过 Exif 标头设置 JPEG 旋转而无需对其进行解码。这是Camera.setRotation() 经常做的事情,但在某些设备上,它实际上是在硬件中执行旋转。这是最有效的方法,但某些观看者可能仍会显示旋转的图像。

或者,您可以使用JPEG lossless rotation,使用jpegtran

在 SourceForge 上有一个 Java 开源类LLJTran。 Android 端口是on GitHub

【讨论】:

  • 我已经尝试过Exif,它可以完美地旋转图像,但图像仍然翻转。我会看看你的链接。我的首要任务是修复图像的弯曲尺寸。
  • 图片大小有什么问题? 图像仍然翻转是什么意思?也许,你可以把插图贴出来?
  • First Picture Second Picture
  • 640x480 是您真正想要的图片尺寸吗?我敢打赌您的Camera.Parameters.getSupportedPictureSizes() 列表包含更好的分辨率。我相信 849x540 是一些受支持的预览尺寸的缩放图像。您可以选择使用不是 4:3 的纵横比,但您的设备很可能无法捕获此纵横比的图片。在这种情况下,如果您希望 Jpeg 文件反映 14:9 的纵横比,则应裁剪捕获的图像。
  • 好的,这是 Internet says 关于您的 Galaxy 4 mini 相机的内容:preview-size-values=1920x1080,1280x720,960x720,800x480,720x480,640x480,320x240,176x144,144x176 picture-size-values=3264x2448,3264x1836,2048x1536,2048x1152,1280x720,640x480。您可以选择图片大小3264x1836,纵横比16:9
猜你喜欢
  • 1970-01-01
  • 2017-08-22
  • 1970-01-01
  • 1970-01-01
  • 2016-12-26
  • 2019-07-11
  • 1970-01-01
  • 2013-04-17
  • 1970-01-01
相关资源
最近更新 更多