簡體   English   中英

您能解釋一下這段代碼的作用嗎?

[英]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.

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