Skip to content

Instantly share code, notes, and snippets.

@nesquena
Created March 5, 2014 07:17
Show Gist options
  • Star 22 You must be signed in to star a gist
  • Fork 8 You must be signed in to fork a gist
  • Save nesquena/3885707fd3773c09f1bb to your computer and use it in GitHub Desktop.
Save nesquena/3885707fd3773c09f1bb to your computer and use it in GitHub Desktop.
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
Copy link

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