图片工具类,可用于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 * 
    * 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); } }}



   

更多相关文章

  1. 伪静态 排查某个目录 设置301排查图片的目录
  2. Android(安卓)图文数据JSON解析,金山词霸每日一句API的调用
  3. android学习资料与资源记录
  4. Android仿微信朋友圈上传图片
  5. Android与IOS后台机制比较
  6. Android(安卓)layer-list 中图片被拉伸问题
  7. 修改android原型button样式
  8. Android(安卓)webview HitTestResult识别当前选中的类型
  9. android view的缩放平移简单实现

随机推荐

  1. Android常见监听事件
  2. Android 助力云计算
  3. android listview继承BaseAdapter,自定义
  4. EditText支持Search按键搜索
  5. Android上的单元测试
  6. Android ImageView配置android:layout_he
  7. 设置Button挨在一起
  8. js调用android的版本兼容问题
  9. android用okhttp和retrofit访问网络的时
  10. 转载:Android中针对怎么来使用