簡體   English   中英

Android圖片旋轉並調整大小

[英]Android Image Rotated and Resized

我到處尋找解決方案,但是無法使用任何有用的方法。 我將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和插頭的集合。 它被壓扁了,監視器看起來像波浪: 這是在拍照后。查看監視器,CD和插頭的集合。它被壓扁了,監視器看起來像波浪。

在pictureTaken()中返回的圖像不受Camera.setDisplayOrientation()的影響。 它采用Jpeg壓縮格式,因此您可以通過Exif標頭設置JPEG旋轉而無需對其進行解碼。 這是Camera.setRotation()經常執行的操作,但是在某些設備上,它實際上是在硬件中執行旋轉操作。 這是最有效的方法,但是某些觀看者可能仍會顯示旋轉的圖像。

或者,您可以使用jpegtran來使用JPEG無損旋轉

在SourceForge上,有一個Java開源類LLJTran Android端口位於GitHub上

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM