簡體   English   中英

Android:從SD卡調整JPEG的大小而不會降低質量

[英]Android: Resize an JPEG from SD Card without losing quality

通常,我使用StackO的搜索功能找到所需的一切。 但是現在(成功減少了)我真的在努力從SD卡調整JPEG的大小,而又不會降低質量。 如下所示,您可以看到原始圖像是干凈的並且可讀性很好。 調整大小后,我總是會得到模糊的結果。

原文: https//www.dropbox.com/s/l5h4cdkz29vkapw/signature.jpg?dl = 0

縮放比例: https ://www.dropbox.com/s/tobijbu5hisf9rz/signature_small.jpg dl = 0

在下面的代碼段落中,您可以看到我嘗試的所有嘗試都沒有成功(我希望我錯了,但是我認為該段落包括了StackO的所有真正有用的答案。):

 public void saveSignature(View view) throws IOException {
    image = signature.getImage();
    File sd = Environment.getExternalStorageDirectory();
    File final_location = new File(sd, "signature.jpg");

    try {
        if (sd.canWrite()) {
            final_location.createNewFile();
            OutputStream os = new FileOutputStream(final_location);

            image.compress(Bitmap.CompressFormat.JPEG, 100, os);
            os.close();

            //Bitmap resized = Bitmap.createScaledBitmap(image,(int)(image.getWidth()*0.4),(int)(image.getHeight()*0.4), false);
            //Bitmap resized = Bitmap.createScaledBitmap(image, 300,75, false);

            BitmapFactory.Options bmOptions = new BitmapFactory.Options();

            // "works but Color ist gray from sampling" bmOptions.inSampleSize = 5;

            final_location = new File(sd, "signature_small.jpg");
            final_location.createNewFile();
            os = new FileOutputStream(final_location);

            Bitmap b= BitmapFactory.decodeFile(sd +"/signature.jpg",bmOptions);
            Bitmap out = Bitmap.createScaledBitmap(b, 349, 86, true); //also tyed false (without any Change)

            out.compress(Bitmap.CompressFormat.JPEG, 100, os);
            os.close();
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

獲得一些答案或指向Android(4.0及更高版本)示例的鏈接將非常好。

謝謝您的幫助,艱難!

您如何期望在不損失質量的情況下縮小圖像?

無論如何,要正確縮小比例,您首先需要對圖像進行模糊處理,最好使用高斯核,但是框模糊處理可能會很好。 內核大小應與希望縮放的比例相匹配。 之后,您可以使用任何插值技術按比例縮小圖像。 Lanzcos雙線性甚至最接近的鄰居都足夠好。 一種替代方法是使用某種區域采樣,其中目標圖像中的每個像素是源圖像中像素區域的平均值。 另一種選擇是使用某種超級采樣

如果您不執行任何這些操作,最終將得到糟糕的圖像。 但是,即使正確執行操作,也會失去質量。 因為按比例縮小的圖像將比原始圖像具有更少的信息。

暫無
暫無

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

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