`
chriszeng87
  • 浏览: 738668 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android图片二进制与Bitmap、Drawable的转换

阅读更多

 Android版:

public byte[] getBitmapByte(Bitmap bitmap){   
    ByteArrayOutputStream out = new ByteArrayOutputStream();   
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);   
    try {   
        out.flush();   
        out.close();   
    } catch (IOException e) {   
        e.printStackTrace();   
    }   
    return out.toByteArray();   
}   
public Bitmap getBitmapFromByte(byte[] temp){   
    if(temp != null){   
        Bitmap bitmap = BitmapFactory.decodeByteArray(temp, 0, temp.length);   
        return bitmap;   
    }else{   
        return null;   
    }   
}  

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;     
        }       

 

 Java版

import java.awt.image.BufferedImage;   
import java.io.ByteArrayInputStream;   
import java.io.ByteArrayOutputStream;   
import java.io.File;   
import java.io.IOException;   
  
import javax.imageio.ImageIO;   
  
import sun.misc.BASE64Decoder;   
import sun.misc.BASE64Encoder;   
  
public class TestImageBinary {   
    static BASE64Encoder encoder = new sun.misc.BASE64Encoder();   
    static BASE64Decoder decoder = new sun.misc.BASE64Decoder();   
       
    public static void main(String[] args) {   
        System.out.println(getImageBinary());   
           
        base64StringToImage(getImageBinary());   
    }   
       
    static String getImageBinary(){   
        File f = new File("c://20090709442.jpg");          
        BufferedImage bi;   
        try {   
            bi = ImageIO.read(f);   
            ByteArrayOutputStream baos = new ByteArrayOutputStream();   
            ImageIO.write(bi, "jpg", baos);   
            byte[] bytes = baos.toByteArray();   
               
            return encoder.encodeBuffer(bytes).trim();   
        } catch (IOException e) {   
            e.printStackTrace();   
        }   
        return null;   
    }   
       
    static void base64StringToImage(String base64String){   
        try {   
            byte[] bytes1 = decoder.decodeBuffer(base64String);   
               
            ByteArrayInputStream bais = new ByteArrayInputStream(bytes1);   
            BufferedImage bi1 =ImageIO.read(bais);   
            File w2 = new File("c://QQ.bmp");//可以是jpg,png,gif格式   
            ImageIO.write(bi1, "jpg", w2);//不管输出什么格式图片,此处不需改动  
        } catch (IOException e) {   
            e.printStackTrace();   
        }   
    }   
  
}  

 

分享到:
评论

相关推荐

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

    byte数组则常用于存储二进制数据,如图像的原始像素数据。在网络传输或保存到数据库时,将Bitmap转换为byte数组可以降低存储和传输的成本。 下面是如何在这些类型之间进行转换: 1. Drawable到Bitmap: 要将...

    android将图片转换存到数据库再从数据库读取转换成图片实现代码

    `PICTURE`字段用于存储图片的二进制数据,类型为`BLOB`。 3. **创建表**: 在`onCreate()`方法中,我们创建了一个名为`picture`的表,其中包含两个字段:`_ID`(主键,自动递增)和`PICTURE`(图片数据)。 4. **...

    android数据Bitmap数据的过程

    3. **Blob**: 在数据库术语中,“Blob”(Binary Large Object)是指可以存储大量二进制数据的字段类型,非常适合用来存储图片等多媒体数据。 #### 三、实现细节 接下来,我们将基于给定的部分内容,逐步分析如何...

    android 中图片资源的加密

    - **预处理**:在构建应用时,将原始图片资源转换为加密格式,这可能涉及到对像素数据进行操作,或者利用特定加密算法对二进制图像数据进行编码。 - **存储**:加密后的图片资源会被存储在应用的assets或res目录下...

    android 图片在sqlite里的存取操作

    SQLite不直接支持二进制大对象(BLOB)类型的图片存储,但可以通过转换将图片数据存储为字节串,然后进行读取和显示。下面将详细解释如何在SQLite中进行图片的存取操作,并将其显示在ListView中。 1. **图片转换为...

    Android.Base64对图片进行编码和解码

    在Android开发中,Base64是一种常见的数据编码方式,它将二进制数据转换为可打印的ASCII字符串,便于在网络传输、存储或者显示时使用。本文将深入探讨如何使用Android的Base64库来对图片进行编码和解码。 ### 1. ...

    Android资源文件(学习android必备)

    这些资源在编译过程中会被转换为二进制形式,以便于在运行时快速访问。 - **`res/anim`**:存储动画资源,包括逐帧动画和补间动画。通过`context.getResources().getDrawable(int id)`获取。 - **`res/drawable`**...

    andriod图片存储(字节存储和字符串存储)

    Base64是一种将二进制数据编码为ASCII字符串的方法,这在数据库存储或通过文本格式传输图片时非常有用。在Android中,可以使用java.util.Base64库来进行编码和解码: ```java byte[] imageBytes = ... // 获取图片...

    icon字符串转换

    1. **Base64编码转换**:Base64是一种常见的字符串编码方式,用于将二进制数据转换为可打印的ASCII字符串。在Android中,我们可以使用`android.util.Base64`类的解码方法,将Base64编码的字符串还原为字节数组,然后...

    android数据缓存

    - 文件存储:可以存储Bitmap、Drawable等二进制数据,但读写效率较低。 - DiskLruCache或OkHttp的内部缓存:提供磁盘缓存功能,适合存储大量数据且有大小限制的情况。 - Memory Cache:内存缓存,速度快,但容易...

    android ui开发专题

    - **二进制源文件(raw)**:通过`openRawResource(int id)`方法可以读取`res/raw/`目录下的原始文件。 - **颜色(colors)**:`getColor(int id)`方法用于获取`res/values/colors.xml`中的颜色值。 - **图形...

    com.lowagie.text

    注意,图片需要转换为二进制流。 ```java Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.my_image); byte[] imageBytes; try { ByteArrayOutputStream baos = new ...

    新版Android开发教程.rar

    与 Android Market 联机;支持谷歌 “ 街景 ” 服务;包装盒内附 数据工具包。 更多信息 https://sites.google.com/a/android.com/opensource/release-features Android Android Android Android 盈利模式 Android ...

Global site tag (gtag.js) - Google Analytics