android 圖片處理工具類

來源:互聯網
上載者:User

標籤:des   android   style   blog   http   io   color   ar   os   

圖片工具類,可用於Bitmap, byte array, Drawable之間進行轉換以及圖片縮放,目前功能薄弱,後面會進行增強。如:
bitmapToDrawable(Bitmap b) bimap轉換為drawable
drawableToBitmap(Drawable d) drawable轉換為bitmap
drawableToByte(Drawable d) drawable轉換為byte

scaleImage(Bitmap org, float scaleWidth, float scaleHeight) 縮放圖片

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 * <ul> * convert between Bitmap, byte array, Drawable * <li>{@link #bitmapToByte(Bitmap)}</li> * <li>{@link #bitmapToDrawable(Bitmap)}</li> * <li>{@link #byteToBitmap(byte[])}</li> * <li>{@link #byteToDrawable(byte[])}</li> * <li>{@link #drawableToBitmap(Drawable)}</li> * <li>{@link #drawableToByte(Drawable)}</li> * </ul> * <ul> * get image * <li>{@link #getInputStreamFromUrl(String, int)}</li> * <li>{@link #getBitmapFromUrl(String, int)}</li> * <li>{@link #getDrawableFromUrl(String, int)}</li> * </ul> * <ul> * scale image * <li>{@link #scaleImageTo(Bitmap, int, int)}</li> * <li>{@link #scaleImage(Bitmap, float, float)}</li> * </ul> *  * @author <a href="http://www.trinea.cn" target="_blank">Trinea</a> 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<String, String> 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<String, String> 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<String, String> 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);        }    }}



   

android 圖片處理工具類

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.