Instantly share code, notes, and snippets.

Embed
What would you like to do?
Easy utility for scaling bitmaps
public class BitmapScaler
{
// scale and keep aspect ratio
public static Bitmap scaleToFitWidth(Bitmap b, int width)
{
float factor = width / (float) b.getWidth();
return Bitmap.createScaledBitmap(b, width, (int) (b.getHeight() * factor), true);
}
// scale and keep aspect ratio
public static Bitmap scaleToFitHeight(Bitmap b, int height)
{
float factor = height / (float) b.getHeight();
return Bitmap.createScaledBitmap(b, (int) (b.getWidth() * factor), height, true);
}
// scale and keep aspect ratio
public static Bitmap scaleToFill(Bitmap b, int width, int height)
{
float factorH = height / (float) b.getWidth();
float factorW = width / (float) b.getWidth();
float factorToUse = (factorH > factorW) ? factorW : factorH;
return Bitmap.createScaledBitmap(b, (int) (b.getWidth() * factorToUse),
(int) (b.getHeight() * factorToUse), true);
}
// scale and don't keep aspect ratio
public static Bitmap strechToFill(Bitmap b, int width, int height)
{
float factorH = height / (float) b.getHeight();
float factorW = width / (float) b.getWidth();
return Bitmap.createScaledBitmap(b, (int) (b.getWidth() * factorW),
(int) (b.getHeight() * factorH), true);
}
}
@goofyahead

This comment has been minimized.

Copy link

goofyahead commented Sep 7, 2016

Its just a typo but since this gist is referenced in codepath for android should be updated :)

float factorH = height / (float) b.getWidth();

In method scaleToFill(Bitmap b, int width, int height) should be:

float factorH = height / (float) b.getHeight();

Now bitmaps will be resized in their largest side! Thanks for the gist anyway 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment