2017-03-09 17 views
0

これは私のコードです。Androidで画像のサイズを変更すると画質が低下しますか?

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     img = (ImageView)findViewById(R.id.resizedView); 
     BitmapFactory.Options options = new BitmapFactory.Options(); 
     options.inScaled = false; 
     Bitmap largeIcon = BitmapFactory.decodeResource(getResources(), R.drawable.tutimage1, options); 
     Bitmap bmp = getResizedBitmap(largeIcon, 200); 
     img.setImageBitmap(bmp); 
    } 
public Bitmap getResizedBitmap(Bitmap image, int maxSize) 
    { 
     int width = image.getWidth(); 
     int height = image.getHeight(); 

     float bitmapRatio = (float)width/(float) height; 
     if (bitmapRatio > 1) { 
      width = maxSize; 
      height = (int) (width/bitmapRatio); 
     } else { 
      height = maxSize; 
      width = (int) (height * bitmapRatio); 
     } 

     // return getResizedBitmapWithQuality(image, width, height); 
     return Bitmap.createScaledBitmap(image, width, height, false); 
    } 

私は研究してテストしましたが、結果は同じです。

enter image description here enter image description here

ために必要なサイズのが小さすぎるということですか?

オリジナルサイズは×2048 1120で、結果のサイズは、200で画像の高さを低くしているので110 X 200

+0

を向上させるために、この関数を使用しています。getResizedBitmap(largeIcon、200); –

+0

この問題を解決する方法はありますか? また、高さを上げる必要がありますか? 私は本当に200のサイズが必要です。 私を助けて! –

+0

[質を落とさずに画像を圧縮する](http://stackoverflow.com/questions/28424942/decrease-image-size-without-losing-its-quality-in-android)私はそれがあなたに全面的に役立つことを願っています。 –

答えて

0

は、画像ビットマップの品質

public static Bitmap scaleBitmap(Bitmap bitmap, int newWidth, int newHeight) { 
    Bitmap scaledBitmap = Bitmap.createBitmap(newWidth, newHeight, Bitmap.Config.ARGB_8888); 

    float scaleX = newWidth/(float) bitmap.getWidth(); 
    float scaleY = newHeight/(float) bitmap.getHeight(); 
    float pivotX = 0; 
    float pivotY = 0; 

    Matrix scaleMatrix = new Matrix(); 
    scaleMatrix.setScale(scaleX, scaleY, pivotX, pivotY); 

    Canvas canvas = new Canvas(scaledBitmap); 
    canvas.setMatrix(scaleMatrix); 
    canvas.drawBitmap(bitmap, 0, 0, new Paint(Paint.FILTER_BITMAP_FLAG)); 

    return scaledBitmap; 
} 
+0

私はすでにあなたのコードを使用しました。 しかし同じです。 –

+0

私は必要なサイズが小さすぎると思います。 –

関連する問題