`
1028826685
  • 浏览: 938405 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类

android 中Drawable和Bitmap转换及常用于图片相关操作方法

阅读更多

public class ImageTools {
//Drawable-->Bitmap
public static Bitmap drawableToBitmap(Drawable drawable){
int width = drawable.getIntrinsicWidth();
int height = drawable.getIntrinsicHeight();
Bitmap bitmap = Bitmap.createBitmap(width, height,
drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
: Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0,0,width,height);
drawable.draw(canvas);
return bitmap;

}

//Bitmap--> Drawable
public static Drawable BitmapConvertToDrawale(Bitmap bitmap) {

// Bitmap bitmap = new Bitmap();
Drawable drawable = new BitmapDrawable(bitmap);
return drawable;
}

// Bitmap-->Drawable

/*
* public static Bitmap DrawableConvertToBitmap(long id) { Resources
* res=getResources();
*
* Bitmap bmp=BitmapFactory.decodeResource(,id);
*
* return bmp; }
*/
// Bitmap-->Byte
public static byte[] Bitmap2Bytes(Bitmap bm) {

ByteArrayOutputStream baos = new ByteArrayOutputStream();

bm.compress(Bitmap.CompressFormat.PNG, 100, baos);

return baos.toByteArray();
}

// Byte-->Bitmap
public static Bitmap Bytes2Bimap(byte[] b) {

if (b.length != 0) {

return BitmapFactory.decodeByteArray(b, 0, b.length);

}

else {

return null;

}

}
//改变图片的颜色
public static Bitmap invert(Bitmap src) {
Bitmap output = Bitmap.createBitmap(src.getWidth(), src.getHeight(),
src.getConfig());
//A表示透明度,R,G,B是RGB调色
int A, R, G, B;
int pixelColor;
int height = src.getHeight();
int width = src.getWidth();

for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
pixelColor = src.getPixel(x, y);
A = Color.alpha(pixelColor);

R = 255 - Color.red(pixelColor);
G = 255 - Color.green(pixelColor);
B = 255 - Color.blue(pixelColor);

output.setPixel(x, y, Color.argb(A, R, G, B));
}
}

return output;
}

public static byte[] getImage(String urlpath) throws Exception {
URL url = new URL(urlpath);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(6 * 1000);
// 别超过10秒。
if(conn.getResponseCode()==200){
InputStream inputStream=conn.getInputStream();
return readStream(inputStream);
}
return null;
}

/**
* 读取数据
* 输入流
*
* */
public static byte[] readStream(InputStream inStream) throws Exception {
ByteArrayOutputStream outstream=new ByteArrayOutputStream();
byte[] buffer=new byte[1024];
int len=-1;
while((len=inStream.read(buffer)) !=-1){
outstream.write(buffer, 0, len);
}
outstream.close();
inStream.close();

return outstream.toByteArray();
}
}

分享到:
评论

相关推荐

    Android Drawable Bitmap 相互转换

    在Android开发中,Drawable和Bitmap是两种常用的图像资源类型,它们各有特点且在不同场景下有不同的优势。了解和掌握它们之间的相互转换对于优化性能和提高用户体验至关重要。本篇将详细介绍如何在Android中进行...

    Android Drawable、Bitmap、byte、灰度 转换

    在Android开发中,图片资源的处理是常见的需求之一,涉及到多种数据类型之间的转换,包括`Drawable`、`Bitmap`、`byte[]`等。本文将详细介绍这些类型之间的转换方法,以及如何实现灰度图像的转换。 ### 1. `...

    Android Drawable、Bitmap、byte、灰度 之间的转换

    在Android开发中,图片资源的处理是常见的需求之一,尤其涉及到不同格式间的转换,如Drawable、Bitmap、byte数组以及灰度图像的转换。这些转换在实际应用中具有重要意义,不仅能够优化内存使用,还能实现图像的高效...

    android_Drawable、Bitmap、byte[]之间的转换.doc

    ### Android中Drawable、Bitmap与byte[]之间的转换 在Android应用开发过程中,经常需要对图像资源进行处理,这就涉及到了不同图像格式之间的转换。本文将详细介绍`Drawable`、`Bitmap`及`byte[]`三者之间的转换方法...

    Drawable Bitmap之间的转化

    通过上述方法,开发者可以根据实际需求灵活地在`Drawable`和`Bitmap`之间进行转换,从而更好地处理Android应用中的图像资源管理问题。这些转换技巧对于优化用户体验、提高应用性能都有着重要的意义。

    Drawable Bitmap InputStream byte[]相互转化工具类

    在Android开发中,处理图像数据时,我们经常需要在Drawable、Bitmap、InputStream和byte数组之间进行转换。这些类型的转换在不同的场景下具有重要的作用,例如从网络加载图片、存储图片到本地或者显示在ImageView上...

    Android Drawable和Bitmap的转换实例详解

    Drawable是Android图形库中一个抽象接口,它包含了多种类型的图像表示,如颜色、形状、位图等,而Bitmap则直接代表像素数据,常用于内存中的图像处理。在实际应用中,我们经常需要将两者进行相互转换,以便于满足...

    Android App开发中将View或Drawable转为Bitmap的方法

    在Android应用开发中,将View或Drawable...总结,将View或Drawable转换为Bitmap是Android开发中的基础操作,但需要注意缓存大小和绘制过程中的细节。正确地处理这些问题可以确保在各种场景下都能得到正确的Bitmap结果。

    Android Bitmap和Drawable的对比

    Android Bitmap和Drawable是Android平台中两种常见的图形对象,虽然它们都可以用来显示图像,但是它们之间有着很大的区别。本文将对Android Bitmap和Drawable进行对比,帮助开发者更好地理解它们之间的区别和使用...

    图片比例缩放以及bitMap转BitmapDrawable

    图片比例缩放和Bitmap转换为BitmapDrawable是其中的关键步骤,尤其在优化应用性能、节省资源消耗方面起着决定性作用。这篇博文将深入探讨这两个主题。 首先,我们来谈谈图片比例缩放。在Android中,加载大尺寸的...

    Android Bitmap和Drawable相互转换的简单代码

    在Android开发中,Bitmap和Drawable是两种常用的图像处理对象,它们各有不同的特性和用途。Bitmap是Android中的位图对象,通常用于直接操作像素数据,适用于内存中进行图像处理或者需要高性能图像显示的场景。而...

    Bitmap,BitmapDrawable,Drawable.doc

    Bitmap是Android中用于表示像素数据的一种类,主要用于存储和操作图像数据。它是一种逐像素的显示对象,因此在处理时执行效率较高,但同时也意味着较大的存储需求,尤其是在处理高清图像时。Bitmap通常用于需要对...

    android bitMap

    本文详细介绍了Android中`Bitmap` 的基本操作方法,包括从资源中加载、转换为字节数组、字节数组转换为`Bitmap`、缩放、将`Drawable` 转换为`Bitmap`以及获取圆角图片。这些操作对于处理图像数据非常重要,是每个...

    android Bitmap用法总结

    Bitmap是Android平台中用于处理图像的核心类,它用于表示位图图像数据。下面是对Bitmap用法的详细总结: 1. **Drawable转换为Bitmap**: 当我们需要将一个Drawable对象(如从XML布局文件中加载的图像)转换为...

    Android 将本地资源图片转换成Drawable,进行设置大小操作

    总结来说,Android开发中,我们可以通过上述方法灵活地处理图片资源,将本地资源图片转换为`Drawable`,并根据需要调整其大小。这对于优化UI显示,特别是在处理图片占位符和错误图时,是非常实用的技巧。在实际应用...

    android-openCV中无法将Bitmap转换为Mat.pdf

    在Android开发中,OpenCV库...总之,Android OpenCV中Bitmap转换为Mat的问题主要与Bitmap的加载方式和OpenCV的兼容性有关。通过理解这两种数据结构以及它们之间的转换机制,开发者可以采取适当措施避免或解决此类问题。

    Bitmap,byte[],Drawable相互转化

    Bitmap是Android系统中用于存储和处理图像数据的重要类,它是一个位图,即像素的二维数组,常用于显示和操作图像。BitmapFactory是用于解析图片资源并生成Bitmap对象的工具类,例如`BitmapFactory.decodeResource()`...

    Bitmap的一些操作

    有时我们需要将Bitmap转换为Drawable以便于在ImageView等控件中使用。这可以通过`BitmapDrawable`类实现,只需将Bitmap传递给它的构造函数,然后将结果赋值给ImageView的`setImageDrawable()`方法即可。 在博客文章...

    Android实现图片叠加效果的两种方法

    在这个例子中,我们首先加载了两张图片(bitmap1 和 bitmap2),然后创建了一个新的Bitmap(newBitmap)用于存储叠加后的结果。接着,我们在Canvas上用Paint绘制了一个半透明的灰色矩形作为背景,再将第二个图片绘制...

    Bitmap加载、变换、显示图片

    在Android开发中,Bitmap是处理图像的核心类,用于表示像素数据。Bitmap的使用涉及到图片的加载、变换、显示以及性能优化等多个方面。本篇将详细阐述Bitmap的基本操作和相关知识点。 1. **Bitmap加载** - **从资源...

Global site tag (gtag.js) - Google Analytics