I am getting an image via URL from the Internet and trying to resize (to a smaller size) before saving it. I managed to save it, but I’m unable to resize it. How could I do that? Here is the code:
URL url = new URL(LogoURL);
InputStream input = url.openStream();
try {
OutputStream output = new FileOutputStream("data/data/com.android.mylogo/logo.jpg");
try {
//byte[] buffer = new byte[aReasonableSize];
int bytesRead = 0;
System.out.println("Buffer Length is \t:-" + buffer.length);
while ((bytesRead = input.read(buffer, 0, buffer.length)) >= 0) {
System.out.println("inside while");
output.write(buffer, 0, bytesRead);
}
} finally {
output.close();
System.out.println("saved image");
}
} finally {
input.close();
}
If you want to downscale the image to particular dimensions, you can use the following code:
When you open the image with
Options bounds = new Options(); bounds.inJustDecodeBounds = true;, then the image data won’t be downloaded, only the size of the image. I use this size to calculate the new scale ratio to get the desired width and height.With the option
Options opts = new Options(); opts.inSampleSize = sampleSize;the BitmapFactory will download an already resized image. You save memory, and bandwidth this way.Note, that the sampleSize values should be powers of 2. It works with different numbers as well, but this is much more efficient.