[英]Can you explain what this code does?
此代碼用於在我的應用程序中壓縮圖像並調整其大小。圖像顯示模糊,尺寸減小了很多。 可以解釋一下此代碼的工作原理,以及如何使用此現有代碼來提高圖像質量。
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeStream(new FileInputStream(f), null, o);
final int REQUIRED_SIZE = 200;
int scale = 1;
while (o.outWidth / scale / 2 >= REQUIRED_SIZE
&& o.outHeight / scale / 2 >= REQUIRED_SIZE)
scale *= 2;
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize = scale;
Bitmap bit1 = BitmapFactory.decodeStream(new FileInputStream(f),
null, o2);
您的代碼只是初始化位圖選項,以與decodedStream(將要使用的輸入圖像或文件)一起使用,然后設置一條規則,要求所需大小應大於等於200寬度和高度,然后再創建一個具有所需流輸出的最終位圖
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeStream(new FileInputStream(f), null, o);
final int REQUIRED_SIZE = 200;
int scale = 1;
while (o.outWidth / scale / 2 >= REQUIRED_SIZE
&& o.outHeight / scale / 2 >= REQUIRED_SIZE)
scale *= 2;
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize = scale;
Bitmap bit1 = BitmapFactory.decodeStream(new FileInputStream(f),
null, o2);
bit1.compress(Bitmap.CompressFormat.PNG, 100, out); //you can use this line and play with the value 100 in order to set quality of the image when its compresed
由於您的圖像會縮放到特定大小(寬度和高度> = 200),因此圖像輸出尺寸首先取決於輸入位圖
如果要檢查位圖的尺寸,可以執行此操作
Log.e("Dimensions", bit1.getWidth()+" "+bit1.getHeight());
位圖壓縮
compress(Bitmap.CompressFormat格式,int質量,OutputStream流)將位圖的壓縮版本寫入指定的outputstream。
編輯:正如弗拉基斯拉夫·馬特維琴科(Vladyslav Matviienko)所建議的,您可以將REQUIRED_SIZE增加到一個更大的值,因為就像我上面所寫的那樣,您首先要設置一個固定的大小
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.