2017-02-23 101 views
0

問題是...假設我有非常好的質量camera.It返回高分辨率的圖片。但我想上傳該圖片到服務器。所以如果圖像尺寸很大,我想降低圖像質量。任何幫助?感謝提前。如何降低攝像頭在Android中拍攝的圖片質量

+0

可能的複製[如何保存Android上具有自定義質量級別的JPEG圖像](http://stackoverflow.com/questions/4579647/how-to-save-a-jpeg-image-on-android-with-a-custom-quality-level) –

回答

1

是的,你可以使用Bitmap.compress()來做到這一點,你需要做的就是指定壓縮格式,質量和輸出格式。 請參閱以下鏈接 「https://developer.android.com/reference/android/graphics/Bitmap.html#compress(android.graphics.Bitmap.CompressFormat,int,java.io.OutputStream)」。

讓我知道它是否可以幫助你!

+0

這很好。但我認爲這將需要一段時間的應用程序會更慢。是否有螞蟻的方式來實際改變相機設置,這將使我的尺寸(以Kb爲單位)的圖像輸出? –

+0

如果發現位圖保存速度較慢,請嘗試以下操作: 嘗試使用JPEG格式並僅在絕對必要時使用PNG。使用bitmap.compress'(Bitmap.CompressFormat.JPEG,100,out);' 如果你正在創建位圖並且你不關心透明度,那麼使用'Bitmap.Config.RGB_565'而不是'Bitmap.Config .ARGB_8888'。 使用位圖位圖= Bitmap.createBitmap(寬度,高度,Bitmap.Config.RGB_565);' –

1

如果編寫Android的代碼,我建議你設置你所需要的圖像質量和存儲/轉碼爲JPEG

這是一個問題的相反的問題 - 這應該給你你需要什麼?:How to compress Bitmap as JPEG with least quality loss on Android?

+1

謝謝但我想android代碼。不適用。其實我已經編寫了相機代碼並上傳圖片,但是我想在上傳之前減小圖片大小(以kb爲單位)。 –

+1

@ArnabKundu我改變了我的答案 - 並建議這可能是另一個問題的重複......如何在Android中存儲具有x%質量的JPEG。 HTH –

+0

感謝您的幫助。我會檢查的。 –

1

我認爲這是您的圖片格式的問題上傳圖片通常* .raw的尺寸最大。你應該嘗試上傳JPG/PNG圖像。當保存圖像時,只需使用Filename.jpg作爲文件名,圖像將被保存。準備上傳。您可以在文件上傳後刪除該文件。直到媒體商店探針{服務}得到更新後,更改將不會反映到您的畫廊。您可以使用此https://github.com/googlesamples/android-Camera2Basic作爲參考來構建應用程序

0

試試這個:要以KB爲

得到具體尺寸圖像
/** 
* reduces the size of the image 
* param image bitmap received from camera 
* @param maxSize 
* @return 
*/ 
public Bitmap getResizedBitmap(Bitmap image, int maxSize) { 
    int width = image.getWidth(); 
    int height = image.getHeight(); 

    float bitmapRatio = (float)width/(float) height; 
    if (bitmapRatio > 0) { 
     width = maxSize; 
     height = (int) (width/bitmapRatio); 
    } else { 
     height = maxSize; 
     width = (int) (height * bitmapRatio); 
    } 
    return Bitmap.createScaledBitmap(image, width, height, true); 
} 

這樣使用它:

Bitmap scaledImage = getResizedBitmap(photo, 200); //here 200 is maxsize 

Wikipedia

對於最高質量的圖像(Q = 100),每個顏色像素需要大約8.25位

因此,對於Q=100200x200圖像,這將導致(200 * 200) px * 8.25 bits/px = 330000 bits = ~ 41 kB這肯定是小於64KB

你可以嘗試其他尺寸太..只是改變了maxSize參數

相關問題