android 数组中怎么把图片资源(png,jpg 等等)转换成 byte数组

系统检测到您的帐号可能存在被盗风险,请尽快
,并立即
。 | 网易博客安全提醒:
系统检测到您当前密码的安全性较低,为了您的账号安全,建议您适时修改密码 | | 英 雄 士 心
尽孝为大!其次是好好爱我的可爱的老婆和孩子!!伟大的事业位于第三位!!!
导航 日志 Android中对图像进行Base64编码1
2010-12-29 14:18:59
| 分类:
| 标签:
小 首先我们来看看
是怎么定义的这个概念的。
Base64 is a generic term for a number of similar encoding schemes that encode
by treating it numerically and tra lating it into a
64 representation. The Base64 term originates from a ecific
Base64 encoding schemes are commonly used when there is a need to encode binary data that needs be stored and tra ferred over media that are designed to deal with textual data. This is to e ure that the data remai intact without modification during tra ort. Base64 is used commonly in a number of a licatio including
, and storing complex data in
当然我们对于概念可以不做过多的理会,只要知道这是一种编码方式,设计用来进行数据传输,而且要不易为人读懂,也就是为了加密用的设计的目的是用文本字符串来传输二进制数据(经
和KongQue童鞋二人提醒后,更正)。至于他的算法实现,我们可以Google出来很多中成熟的算法。
我选用了
上提供的源码,测试之后暂时还没有发现问题,并且该源码的作者将版权完全放弃了,无需任何的Lice e授权,也不怕Lice e感染,拿过来用就是了,作者只是希望使用的人如果发现问题可以反馈给他,如果能参与进来一起解决那是更好。
Android SDK2.2之后提供了Base64编码相关的API类
,不过鉴于开发的程序需要向下兼容,我想大部分的程序还是需要自己实现或者寻求第三方的实现来解决该问题。下面我们来一步步看看如何将图片编码成一个Base64编码的字符串进行传输。
任何图像到了程序中都需要解码成为Bitmap来进行绘制(不论是显示的解码还是系统在API中帮的忙),解码之后的Bitmap就是一张位图也就是一个byte数组,在Android中Bitmap有
format, int quality,
stream)这个方法,该方法可以将Bitmap重新压缩存储为别的格式,可以是PNG/JPG文件,或者是
public static String getBitmapStrBase64(Bitmap bitmap){ ByteArrayOutputStream baos = new ByteArrayOutputStream() bitmap.compre (Compre Format.PNG, 100, baos); byte[] byte = baos.toByteArray(); return Base64.encodeBytes(bytes);
这就是获取位图Base64编码的代码,同理也可以将Base64编码字符串转化为Bitmap对象
public Bitmap getBitmap(){ try { byte[] bitmapArray; bitmapArray = Base64.decode(iconBase64); return BitmapFactory.decodeByteArray(bitmapArray, 0, bitmapArray.length); } catch (IOException e) { e.printStackTrace(); } return null; }
以上就是所有的代码实现了,比较简单,效率还不错。 评论这张
转发至微博
人 | 分享到: 阅读(
举报 历史上的今天
相关文章
最近读者
this.p={
id:'fks_094064087081089075083094086095087084085075087085084064',
blogTitle:'Android中对图像进行Base64编码1',
blogA tract:'\r\n
首先我们来看看
{if x.moveFrom=='wap'}
{/list}
{if !!a}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
{if !!x}
{/list}
推荐过这篇日志的人:
{list a as x}
{if !!x}
{/list}
{if !! .length>0}
他们还推荐了:
{list b as y}
{if !!y}
{/list}
引用记录:
{list d as x}
{/list}
{list a as x}
{if !!x}
{/list}
{list a as x}
{if !!x}
{/list}
{list a as x}
{if !!x}
{/list}
{list a as x}
{if x_index>9}{break}{/if}
{if !!x}
${fn2(parseInt(x.date),'yyyy-MM-dd HH:mm: ')}
{/list}
{list a as x}
{if x_index>4}{break}{/if}
{if !!x}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm: ')}
{/list}
最新日志
该作者的其他文章
博主推荐
相关日志
随机阅读
首页推荐 {list a as x}
{if !!x} 投票给
{var first_option = true;}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if} “${b[voteToOption_index]}” {/if}
{/list}
{if (x.role!="-1") },“我是${c[x.role]}” {/if} ${fn1(x.voteTime)}
{if x.userName==''}{/if}
{/list} 页脚
- 网易公司版权所有 copy;1997-2011 {list wl as x}
{list x.l as y}
{/list}
{/list}
{if defined('wl')}
{list wl as x}
{/list}| | “short,int,long与byte数组之间的转换 - New - JavaEye论坛” 的更多相关文章
byte[] b = new byte[2];}
public static int getReverseBytesInt(byte[] , int index) {
return (int) (((( [index + 3] & 0xff) << 24)
| (( [index + 2] & 0xff) << 16)
| (( [index + 1] & 0xff) << 8) | (( [index + 0] & 0xff) <
2010-10-16
//字符到字节转换   public static byte[] charToByte(char ch){    int temp=(int)ch;    byte[] b=new byte[2];    for (int i=b.length-1;i-1;i--){     b[i] = new Integer(tem am 0xff).bytevalue();   //将最高位保存在最低位     temp = temp 8;    //向右移8位    }    return    }public static char byteToChar(byte[] b){
int s=0;char ch=(char) 2011-03-12
public static long bytesToUint(byte[] array, int offset) {
return ((long) (array[offset+3] &am 0xff))
| ((long) (array[offset+2] &am 0xff)) 8
| ((long) (array[offset+1] &am 0xff)) 16
| ((long) (array[offset]
&am 0xff)) 24 ublic static void ushortToBytes(int n, byte[] array, int offset ) {
array[offset+1] = (byte) ( n
&am 0xff);
2010-09-27
string和int之间的转换? &am #13 am #10 am #13 am #10;字符串转换成数据 &am #13 am #10 am #13 am #10;Java代码 &am #13 am #10;String MyNumber =1234" &am #13 am #10;int MyInt = Integer.parseInt(MyNumber);
&am #13 am #10;String MyNumber =1234" 2011-03-17
C# java 有关“字节序”的描述 .- vhtt - 博客园 BIG-ENDIAN(大字节序、高字节序)b[0] = (byte) (n &am 0xff);* 将将int转为高字节在前,低字节在后的byte数组public static byte[] toHH(int number) {int temp = number yte[] b = new byte[4];for (int i = b.length - 1; i -1; i--) {b = new Integer(temp &am 0xff).byteValue();temp = temp 8;}public static byte[] IntToByteArray(int i) {byte[] abyte0 = new byte[4];
2005-09-24
string - byteByte static byte parseByte(String s)byte - stringByte static String toString(byte b)char - stringCharacter static String to String (char c)Short - StringShort static String toString(Short s)Float - StringFloat static String toString(float f)Double - StringDouble static String toString(Double d)
2005-09-06
缩进 缩进应该是每行2个空格. 不要在源文件中保存Tab字符. 在使用不同的源代码管理工具时Tab字符将因为用户设置的不同而扩展为不同的宽度. 如果你使用 UltrEdit 作为你的 Java 源代码编辑器的话,你可以通过如下操作来禁止保存Tab字符, 方法是通过 UltrEdit中先设定 Tab 使用的长度室2个空格,然后用 Format|Ta to Spaces 菜单将 Tab 转换为空格。public static final Colour WHITE = new Colour(0xFF, 0xFF, 0xFF);
2007-03-30
Base32编码解码例子
2007-06-11
* 将int转为低字节在前,高字节在后的int
private static int toLH(int in) {
int out = 0;
out = (in &am am 0xff) 24;
out |= (in &am am 0xff00) 8;
out |= (in &am am 0xff0000) 8;
out |= (in &am am 0xff000000) 24;
return out;
* 将float转为低字节在前,高字节在后的int
private static int toLH(float f) {
return toLH(Float.floatToRawIntBits(f));
2009-03-02
String s = String.valueOf( value);// 其中 value 为任意一种数字类型。byte b = Byte.parseByte( s );Float f = Float.parseFloat( s );Double d = Double.parseDouble( s );数字类型与数字类对象之间的转换:Byte bo = new Byte( b );Integer io = new Integer( i );Float fo = new Float( f );Double dObj = new Double( d );
2010-12-21
private static void FF(ref UInt32 a, UInt32 b, UInt32 c, UInt32 d, UInt32 mj, int s, UInt32 ti)
{private static void GG(ref UInt32 a, UInt32 b, UInt32 c, UInt32 d, UInt32 mj, int s, UInt32 ti)
{private static void HH(ref UInt32 a, UInt32 b, UInt32 c, UInt32 d, UInt32 mj, int s, UInt32 ti)
{private static void II(ref UInt32 a, UInt32 b, UInt32 c, UInt32 d, UInt32 mj, int s, UInt32 ti)
2011-06-10
2005-09-24
private static void FF(ref UInt32 a,UInt32 b,UInt32 c,UInt32 d,UInt32 mj,int s,UInt32 ti){private static void GG(ref UInt32 a,UInt32 b,UInt32 c,UInt32 d,UInt32 mj,int s,UInt32 ti){private static void HH(ref UInt32 a,UInt32 b,UInt32 c,UInt32 d,UInt32 mj,int s,UInt32 ti){private static void II(ref UInt32 a,UInt32 b,UInt32 c,UInt32 d,UInt32 mj,int s,UInt32 ti){UInt32[] output = new UInt32[size/4];
2011-01-25
} public static byte[] encode(byte[] data) { byte[] byte ytes[bytes.length - 2] = (byte) ""="" ytes[bytes.length - 1] = (byte) ""="";} public static byte[] decode(byte[] data) { byte[] byte ytes[bytes.length - 1] = (byte) ((b1 4)) ytes[bytes.length - 2] = (byte) ((b1 4));} private static byte[] discardNonBase64Bytes(byte[] data) { byte[] temp = new byte[data.length]
2007-08-23
1 字符串转换成数据 字符串转换成整数: String MyNumber =1234&am quot int MyInt = Integer.parseInt(MyNumber); 字符串转换成byte, short, int, float, double, long等数据类型,可以分别参考Byte, Short, Integer, Float, Double, Long类的parseXXX方法。String s = String.valueOf( bool );Double-StringDouble static String toString(Double d)
2011-01-05
java中数据类型转换 Integer String Long Float Double ...1如何将字串 String 转换成整数 int? A. 有两个方法:1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([String],[int radix]);2). int i = Integer.valueOf(my_str).intValue(); 注: 字串转成 Double, Float, Long 的方法大同小异.
2010-11-22
【转】1-4、ARM开发步步深入之NandFlash 4KB突围实验目的:突破4KB的Ste ingstone存储空间限制,读取NandFlash中4KB后的代码实现点灯大法,借此掌握NandFlash的操作。三、NandFlash存储控制器S3C2410为简化对NandFlash的操作,提供了一组NandFlash控制器来实现对K9F1208U0M命令字的操作,主要有配置寄存器NFCONF、控制寄存器NFCONT、命令寄存器NFCMD、地址寄存器NFADDR、数据寄存器NFDATA和状态寄存器NFSTAT。
2007-09-25
public cla MD5 {
public final static String MD5(String s) {
char hexDigits[] = {
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"a", "b", "c", "d", "e", "f"} yte[] md = mdTemp.digest();i++) {
byte byte0 = md[i] tr[k++] = hexDigits[byte0 4 &am am 0xf] tr[k++] = hexDigits[by
2011-01-17
private long FF(long a, long b, long c, long d, long x, long s, long ac) { a += F (b, c, d) + x + ac rivate long GG(long a, long b, long c, long d, long x, long s, long ac) { a += G (b, c, d) + x + ac rivate long HH(long a, long b, long c, long d, long x, long s, long ac) { a += H (b, c, d) + x + ac rivate void keyBeanMemcpy (byte[] output, byte[] i ut, int outpos, int i os, int len) {
2011-04-12
字节序_百度百科字节序百科名片。所谓的J***A字节序指的是在J***A虚拟机中多字节类型数据的存放顺序,J***A字节序也是BIG-ENDIAN。// =============================================== usigned number to big-endian bytecode
* @param b byte[]
* @param offset int
* @param u1 int
public static void u2_lb(byte b[], int offset, int u2)
b[offset] = (byte)(u2 8);
2007-06-11
* 将int转为低字节在前,高字节在后的byte数组
private static byte[] toLH(int n) {
byte[] b = new byte[4];
b[0] = (byte) (n &am am 0xff);
b[1] = (byte) (n 8 &am am 0xff);
b[2] = (byte) (n 16 &am am 0xff);
b[3] = (byte) (n 24 &am am 0xff);
return }java发送byte数组: head[0] = (byte) (len / 256); head[1] = (byte) (len % 256);java接收到byte数组: n = head[0]; if( am lt;0) n+=256;
2011-03-10
C与java通讯小结_ruoya502_新浪博客C与java通讯小结(2010-09-19 15:36:49)转载。常用的转化函数有://int2bytepublic static byte[] intToByte(int n) {
byte[] b =new byte[4];
b[0] =(byte) (n 24);
b[1] =(byte) (n 16);
b[2] =(byte) (n 8);
b[3] =(byte) (n);
retur }publicstatic void int2byte(int n, byte buf[], int offset) {
buf[offset]= (byte) (n 24);
2010-05-07
☆ boolean[]/byte[]/char[]/double[]/float[]/int[]/long[]/short[]/Object[] -String
(数组类型 转 字符串).static String valueOf(boolean/char/char[]/double/float/int/long/short/Object).static String toString(boolean/char/double/float/integer/long/short)☆ Boolean/Character/Double/Float/Integer/Long/Short boolean/character/double/float/int/long/short (包装器和基本数据类型间的转变)
2011-03-22
单片机读写SD卡最简单最基本的程序
2007-11-12
因此,如果对一个int 型,进行移位,X y; 当y小于32时,移位后的结果一般都在我们的预料当中;而如果y大于32时,由于移位超出了int所能表示的范围,这时就先把y化成二进制数,然后取该二进制数右端的低5位,再把这5位化成十进制,此时的这个十进制就是要对X移动的位数。执行语句 a 34
对a左移32位时,先把 34化成二进制:100010,对该二进制数取右边5位,即00010,化成十进制数为2,所以实际上是对a左移两位。
2009-12-15
java中有哪八种基本类型?每种基本类型各自对应的封装类是什么?
2011-03-21
//一旦调用read()来告知FileCha el向ByteBuffer存储字节,就必须调用缓冲器上的filp(),
//让它做好别人存储字节的准备(是的,他是有点拙劣,但请记住他是很拙劣的,但却适于获取大速度)
fc.read(bf);// Reads a sequence of bytes from this cha el into the given buffer
bf.flip();
while(bf.hasRemaining())
System.out.print((char)bf.get());}ByteBuffer = ByteBuffer.allocate(BSIZE);
2007-08-23
整型int和字符数组byte相互转换的源程序我目前在做一个有关网络数据流的程序,需要实现整型int和字符数组byte相互转换的功能,在网上搜索时没找到相关文章,最后自己写了一个封装类,把它贴出来,兴许别人能用上。
2009-05-12
co t 在编译时确定的,而Static是在运行时确定的
2006-10-16
private long F(long x, long y, long z) {
return (x &am am y) | ((~x) &am am z) rivate long FF(long a, long b, long c, long d, long x, long s,
long ac) {
a += F (b, c, d) + x + ac rivate long GG(long a, long b, long c, long d, long x, long s,
long ac) {
a += G (b, c, d) + x + ac;
2010-11-04
Java代码
package test.io;
import java.io.ByteArrayI utStream;
import java.io.ByteArrayOutputStream;
import java.io.IOExceptio /**
* 用于把OutputStream 转化为 I utStream。
2010-02-05
Android拍摄视频流的格式转换(YUV --- RGB) - - JavaEye技术网...Android拍摄视频流的格式转换(YUV --- RGB)文章分类:移动开发Android允许用户实时捕获摄像头的视频流,这在利用摄像头的AR应用中非常有用。
2011-03-06
点阵字库在J***A中的实现 - ShaHuShaBoJue的专栏 - CSDN博客点阵字库在J***A中的实现 收藏 转自: http://www.ismyway.com 由于本人在做 MOTO 手机上的一款阅读器 Anyview 时,并不满意手机自带的字库,因此,使用了外挂字库,在编码过程中,总结了一些经验,特记录下来与大家分享。因为在使用较小的字体的时候,点阵字库能更清晰,同时,由于点阵字库并不包含路径等信息,因此,字库文件的大小也很小,便于携带。
2011-05-18
2011-06-16
1 程序功能1.1 读取24位的bmp格式的图像1.2 对图像进行过滤,只显示RGB中的一个通道以及显示成灰度图像1.3 将图像保存为JPG格式的图像2 实现过程2.1 读取BMP格式的图像2.1.1 图像信息类由于BMP格式的图像前54个字节都是用来存储图像信息,包括图像宽度、高度、大小等等,因此可以构建图像信息类来读取并存储图像的信息。
2007-08-01
而UNICODE只是一个种字符集,字符的存储和表示要用到一定的字符编码格式,而与UNICODE对应的字符编码格式就是我们常看到的UTF-8,UTF-16等等,而UTF-8是最常用的,所以人们常常把它和UNICODE等同起来,这在某些情况下是没有错的,但这样的理解在J***A里就会产生一些混淆。J***A里的char型是十六位的(两个字节),但是如果是用UTF-8的话可能会不只两位(UTF-8是变长存储的),那看来J***A本身并不是用UTF-8来保存的,做个实验吧。
2009-04-29
Unicode Flex Character Cla esUnicode Flex Character Cla es.Just compute, for example:Unicode urToRegU8 0 0xFFFF[\0-\x7F]|[\xC2-\xDF][\x80-\xBF]|(\xE0[\xA0-\xBF]|[\xE1-\xEF][\x80-\xBF])[\x80-\xBF]Unicode urToRegU32 0x00010000 0x001FFFFF\0[\x01-\x1F][\0-\xFF][\0-\xFF]Unicode urToRegU32L 0x00010000 0x001FFFFF[\x01-\x1F][\0-\xFF][\0-\xFF]\0.
2010-08-13
Java中byte转换int时与0xff进行与运算的原因。java中byte转换int时为何与0xff进行与运算。上面是将byte[]转化十六进制的字符串,注意这里b[i] &am 0xFF将一个byte和 0xFF进行了与运算,然后使用Integer.toHexString取得了十六进制字符串,可以看出b[i] &am 0xFF运算后得出的仍然是个int,那么为何要和 0xFF进行与运算呢?直接 Integer.toHexString(b[i]);,将byte强转为int不行吗?***是不行的.
2011-02-06
private int readInt(byte[] data, int offset) {
return ((data[offset] &am 0xFF) 16) &am 0xff);
2011-03-23
u igned char data
char_value _at_ 0x7f;u igned char idata
char_value1 _at_ 0x7e;{ u igned char data
byte_in_internal_ram;u igned int
int_in_internal_ram;u igned char data
byte_in_pdata_ram;u igned int
int_in_pdata_ram;u igned char data
byte_in_xdata_ram;u igned int
int_in_xdata_ram;u igned char data
char_in_code;u igned int
int_in_code; | | | | 北京六智信息技术有限公司 Copyright 2005-2011 360doc.com , All Rights Reserved 京ICP备05038915号 京网文【2010】0370-002号 京公网安备110105001118号

参考资料

 

随机推荐