Android图片工具类代码

package com.example.imageskan.utils;


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.52ij.com" target="_blank">Trinea</a> 2012-6-27
 */
public class ImageUtils {


/**
* 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);//???缺少HttpUtils
// if (readTimeOutMillis > 0) {
// con.setReadTimeout(readTimeOutMillis);
// }
// stream = con.getInputStream();
// ///
// 从Internet获取网页,发送请求,将网页以流的形式读回来
if (con.getResponseCode() != 200) {
throw new RuntimeException("请求url失败");
} else {
// 得到网络返回的输入流
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);
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值