我有一個高分辨率image
Uri
,我想降低圖像質量和尺寸,因爲我上傳到服務器,然後作爲較小版本的原始圖片。較低的圖像質量,以減小文件大小
我嘗試這樣做:
Picasso.with(context).load(image).resize(100,100).get();
,因爲你需要從一個單獨的Thread
做到這一點,當調整大小是在我沒有找到一個傾聽者,告訴你它沒有工作。
有沒有人有解決方案,可以降低圖像質量以獲得更小的文件大小?
我有一個高分辨率image
Uri
,我想降低圖像質量和尺寸,因爲我上傳到服務器,然後作爲較小版本的原始圖片。較低的圖像質量,以減小文件大小
我嘗試這樣做:
Picasso.with(context).load(image).resize(100,100).get();
,因爲你需要從一個單獨的Thread
做到這一點,當調整大小是在我沒有找到一個傾聽者,告訴你它沒有工作。
有沒有人有解決方案,可以降低圖像質量以獲得更小的文件大小?
步驟#1:致電openInputStream()
在ContentResolver
,傳入您的Uri
。
步驟#2:創建一個BitmapFactory.Options
對象,使用inSampleSize
來控制要執行的縮減採樣的程度,以創建較低分辨率的Bitmap
。
步驟3:將流和BitmapFactory.Options
對象傳遞給BitmapFactory
上的decodeStream()
,以獲得下采樣的Bitmap
。
步驟#4:上傳那個Bitmap
,其中的細節會隨着您用來上傳的任何API(byte[]
,File
等)而有所不同。
第五步:執行步驟#1-4在後臺線程,因爲你不應該做的磁盤I/O,位圖下采樣,以及主應用程序線程上的網絡操作。
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 50;
Bitmap bmpSample = BitmapFactory.decodeFile(fileUri.getPath(), options);
ByteArrayOutputStream out = new ByteArrayOutputStream();
bmpSample.compress(Bitmap.CompressFormat.JPEG, 1, out);
byte[] byteArray = out.toByteArray();
return convertToUri(byteArray);
你如何轉換ByteArray的烏里在convertToUri? –