Android image processing tool

Source: Internet
Author: User

Android image processing tool
The image tool class can be used for Bitmap, byte array, and Drawable conversion and image scaling. Currently, the function is weak and will be enhanced later. For example:
BitmapToDrawable (Bitmap B) bimap to drawable
DrawableToBitmap (Drawable d) drawable to bitmap
DrawableToByte (Drawable d) drawable to byte

ScaleImage (Bitmap org, float scaleWidth, float scaleHeight) Scaling Image

package cn.trinea.android.common.util;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.util.Map;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Matrix;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;/** * ImageUtils * 
 
 
    * convert between Bitmap, byte array, Drawable *
  • {@link #bitmapToByte(Bitmap)}
  • *
  • {@link #bitmapToDrawable(Bitmap)}
  • *
  • {@link #byteToBitmap(byte[])}
  • *
  • {@link #byteToDrawable(byte[])}
  • *
  • {@link #drawableToBitmap(Drawable)}
  • *
  • {@link #drawableToByte(Drawable)}
  • *
*
    * get image *
  • {@link #getInputStreamFromUrl(String, int)}
  • *
  • {@link #getBitmapFromUrl(String, int)}
  • *
  • {@link #getDrawableFromUrl(String, int)}
  • *
*
    * scale image *
  • {@link #scaleImageTo(Bitmap, int, int)}
  • *
  • {@link #scaleImage(Bitmap, float, float)}
  • *
* * @author Trinea 2012-6-27 */public class ImageUtils { private ImageUtils() { throw new AssertionError(); } /** * convert Bitmap to byte array * * @param b * @return */ public static byte[] bitmapToByte(Bitmap b) { if (b == null) { return null; } ByteArrayOutputStream o = new ByteArrayOutputStream(); b.compress(Bitmap.CompressFormat.PNG, 100, o); return o.toByteArray(); } /** * convert byte array to Bitmap * * @param b * @return */ public static Bitmap byteToBitmap(byte[] b) { return (b == null || b.length == 0) ? null : BitmapFactory.decodeByteArray(b, 0, b.length); } /** * convert Drawable to Bitmap * * @param d * @return */ public static Bitmap drawableToBitmap(Drawable d) { return d == null ? null : ((BitmapDrawable)d).getBitmap(); } /** * convert Bitmap to Drawable * * @param b * @return */ public static Drawable bitmapToDrawable(Bitmap b) { return b == null ? null : new BitmapDrawable(b); } /** * convert Drawable to byte array * * @param d * @return */ public static byte[] drawableToByte(Drawable d) { return bitmapToByte(drawableToBitmap(d)); } /** * convert byte array to Drawable * * @param b * @return */ public static Drawable byteToDrawable(byte[] b) { return bitmapToDrawable(byteToBitmap(b)); } /** * get input stream from network by imageurl, you need to close inputStream yourself * * @param imageUrl * @param readTimeOutMillis * @return * @see ImageUtils#getInputStreamFromUrl(String, int, boolean) */ public static InputStream getInputStreamFromUrl(String imageUrl, int readTimeOutMillis) { return getInputStreamFromUrl(imageUrl, readTimeOutMillis, null); } /** * get input stream from network by imageurl, you need to close inputStream yourself * * @param imageUrl * @param readTimeOutMillis read time out, if less than 0, not set, in mills * @param requestProperties http request properties * @return * @throws MalformedURLException * @throws IOException */ public static InputStream getInputStreamFromUrl(String imageUrl, int readTimeOutMillis, Map requestProperties) { InputStream stream = null; try { URL url = new URL(imageUrl); HttpURLConnection con = (HttpURLConnection)url.openConnection(); HttpUtils.setURLConnection(requestProperties, con); if (readTimeOutMillis > 0) { con.setReadTimeout(readTimeOutMillis); } stream = con.getInputStream(); } catch (MalformedURLException e) { closeInputStream(stream); throw new RuntimeException("MalformedURLException occurred. ", e); } catch (IOException e) { closeInputStream(stream); throw new RuntimeException("IOException occurred. ", e); } return stream; } /** * get drawable by imageUrl * * @param imageUrl * @param readTimeOutMillis * @return * @see ImageUtils#getDrawableFromUrl(String, int, boolean) */ public static Drawable getDrawableFromUrl(String imageUrl, int readTimeOutMillis) { return getDrawableFromUrl(imageUrl, readTimeOutMillis, null); } /** * get drawable by imageUrl * * @param imageUrl * @param readTimeOutMillis read time out, if less than 0, not set, in mills * @param requestProperties http request properties * @return */ public static Drawable getDrawableFromUrl(String imageUrl, int readTimeOutMillis, Map requestProperties) { InputStream stream = getInputStreamFromUrl(imageUrl, readTimeOutMillis, requestProperties); Drawable d = Drawable.createFromStream(stream, "src"); closeInputStream(stream); return d; } /** * get Bitmap by imageUrl * * @param imageUrl * @param readTimeOut * @return * @see ImageUtils#getBitmapFromUrl(String, int, boolean) */ public static Bitmap getBitmapFromUrl(String imageUrl, int readTimeOut) { return getBitmapFromUrl(imageUrl, readTimeOut, null); } /** * get Bitmap by imageUrl * * @param imageUrl * @param requestProperties http request properties * @return */ public static Bitmap getBitmapFromUrl(String imageUrl, int readTimeOut, Map requestProperties) { InputStream stream = getInputStreamFromUrl(imageUrl, readTimeOut, requestProperties); Bitmap b = BitmapFactory.decodeStream(stream); closeInputStream(stream); return b; } /** * scale image * * @param org * @param newWidth * @param newHeight * @return */ public static Bitmap scaleImageTo(Bitmap org, int newWidth, int newHeight) { return scaleImage(org, (float)newWidth / org.getWidth(), (float)newHeight / org.getHeight()); } /** * scale image * * @param org * @param scaleWidth sacle of width * @param scaleHeight scale of height * @return */ public static Bitmap scaleImage(Bitmap org, float scaleWidth, float scaleHeight) { if (org == null) { return null; } Matrix matrix = new Matrix(); matrix.postScale(scaleWidth, scaleHeight); return Bitmap.createBitmap(org, 0, 0, org.getWidth(), org.getHeight(), matrix, true); } /** * close inputStream * * @param s */ private static void closeInputStream(InputStream s) { if (s == null) { return; } try { s.close(); } catch (IOException e) { throw new RuntimeException("IOException occurred. ", e); } }}



Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.