Question

I have taken and modified some code used to get a high quality anti-aliased small version of a larger (500x500) bitmap image. Apparently using a Matrix produces higher quality than employing createScaledBitmap(). The results were not very impressive.. and I suspected that perhaps I had made a mistake, in particularl I was unsure as to whether the options thing was actually being employed. So I changed the inSampleSize = 1; to inSampleSize = 50; expecting to see a dramatic drop in quality, but there was no change. So now I suspect options is being ignored. Can this code be rescued?

I was hoping to perhaps find some version of createBitmap which took bith a bitmap and an options argument, but could find none.

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

options.inPreferQualityOverSpeed = true;
options.inJustDecodeBounds = false;
options.inDither = false;
options.inSampleSize = 1;
options.inScaled = false;
options.inPreferredConfig = Bitmap.Config.ARGB_8888;

Bitmap bmpSource = BitmapFactory.decodeResource(getResources(), R.drawable.bigicon);

Matrix matrix = new Matrix();
matrix.postScale(.1f,.1f);
Bitmap scaledBitmap = Bitmap.createBitmap(bmpSource, 0, 0, bmpSource.getWidth(), bmpSource.getHeight(), matrix, true);
Was it helpful?

Solution

well you should actually provide it as parameter. Change

Bitmap bmpSource = BitmapFactory.decodeResource(getResources(), R.drawable.bigicon);

with

Bitmap bmpSource = BitmapFactory.decodeResource(getResources(), R.drawable.bigicon, options);

here the documentation

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top