求大神给个网站你懂的把这张图片改成单色BMP图片谢谢了~~~~~~~~~~~~~~~~

Android中如何把bitmap存成BMP格式的图片 -
- ITeye技术网站
博客分类:
最近的项目,做图片的另存为功能,需要把图片存成jpg,png,bmp。对于jpg和png来说相对简单,android提供了press()方法可以马上解决。但是对于BMP这种格式,没有很好的支持。我花了几天时间在网上找了很久,都没有找到有用的答案,同样也发了疑问,没有合适的解答。
不过,无意间发现了一篇blog ,,代码如下:
package com.test.import java.io.FileNotFoundEimport java.io.FileOutputSimport java.io.IOEimport android.app.Aimport android.graphics.Bimport android.os.Bimport android.os.Eimport android.view.Vimport android.view.View.OnClickLimport android.widget.Bimport android.widget.ImageVpublic class Mainactivity extends Activity {ImageV@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);Button btn = (Button) findViewById(R.id.sd);img = (ImageView) findViewById(R.id.img1);btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubView view = v.getRootView();view.setDrawingCacheEnabled(true);view.buildDrawingCache();Bitmap bitmap = view.getDrawingCache();if (bitmap != null) {// ByteArrayOutputStream bos = new ByteArrayOutputStream();// press(CompressFormat.PNG, 90, bos); 只能转成PNG、JPEG// byte[] data = bos.toByteArray();// img.setImageBitmap(BitmapFactory.decodeByteArray(data, 0,// data.length));int w = bitmap.getWidth(), h = bitmap.getHeight();int[] pixels=new int[w*h];bitmap.getPixels(pixels, 0, w, 0, 0, w, h);//
ByteBuffer dst = ByteBuffer.allocate(bitmap.getRowBytes()//
bitmap.copyPixelsToBuffer(dst);//
IntBuffer dst=IntBuffer.allocate(w*h);//
bitmap.copyPixelsToBuffer(dst);byte[] rgb = addBMP_RGB_888(pixels,w,h);byte[] header = addBMPImageHeader(rgb.length);byte[] infos = addBMPImageInfosHeader(w, h);byte[] buffer = new byte[54 + rgb.length];System.arraycopy(header, 0, buffer, 0, header.length);System.arraycopy(infos, 0, buffer, 14, infos.length);System.arraycopy(rgb, 0, buffer, 54, rgb.length);try {FileOutputStream fos = new FileOutputStream(Environment.getExternalStorageDirectory().getPath()+ "/hello.bmp");fos.write(buffer);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}});}//BMP文件头private byte[] addBMPImageHeader(int size) {byte[] buffer = new byte[14];buffer[0] = 0x42;buffer[1] = 0x4D;buffer[2] = (byte) (size && 0);buffer[3] = (byte) (size && 8);buffer[4] = (byte) (size && 16);buffer[5] = (byte) (size && 24);buffer[6] = 0x00;buffer[7] = 0x00;buffer[8] = 0x00;buffer[9] = 0x00;buffer[10] = 0x36;buffer[11] = 0x00;buffer[12] = 0x00;buffer[13] = 0x00;}//BMP文件信息头private byte[] addBMPImageInfosHeader(int w, int h) {byte[] buffer = new byte[40];buffer[0] = 0x28;buffer[1] = 0x00;buffer[2] = 0x00;buffer[3] = 0x00;buffer[4] = (byte) (w && 0);buffer[5] = (byte) (w && 8);buffer[6] = (byte) (w && 16);buffer[7] = (byte) (w && 24);buffer[8] = (byte) (h && 0);buffer[9] = (byte) (h && 8);buffer[10] = (byte) (h && 16);buffer[11] = (byte) (h && 24);buffer[12] = 0x01;buffer[13] = 0x00;buffer[14] = 0x18;buffer[15] = 0x00;buffer[16] = 0x00;buffer[17] = 0x00;buffer[18] = 0x00;buffer[19] = 0x00;buffer[20] = 0x00;buffer[21] = 0x00;buffer[22] = 0x00;buffer[23] = 0x00;buffer[24] = (byte) 0xE0;buffer[25] = 0x01;buffer[26] = 0x00;buffer[27] = 0x00;buffer[28] = 0x02;buffer[29] = 0x03;buffer[30] = 0x00;buffer[31] = 0x00;buffer[32] = 0x00;buffer[33] = 0x00;buffer[34] = 0x00;buffer[35] = 0x00;buffer[36] = 0x00;buffer[37] = 0x00;buffer[38] = 0x00;buffer[39] = 0x00;}private byte[] addBMP_RGB_888(int[] b,int w, int h) {int len = b.System.out.println(b.length);byte[] buffer = new byte[w*h * 3];int offset=0;for (int i = len-1; i&=w; i-=w) {//DIB文件格式最后一行为第一行,每行按从左到右顺序int end=i,start=i-w+1;for(int j=j&=j++){buffer[offset]=(byte)(b[j]&&0);buffer[offset+1]=(byte)(b[j]&&8);buffer[offset+1]=(byte)(b[j]&&16);
offset += 3;}}}}
但是我按照这种方法使用之后,保存之后的图片与原来的相比会有很大的颜色差距,详细看附件。
所以我就遇到了新的麻烦,下载了一个UltraEdit软件,然后把保存前的bmp图片 和 保存后的bmp图片 使用UltraEdit打开。分析bmp图片的格式。我从网上找到了一份非常好的说明,详细中文版分析请看附件。提供两个网址,关于bmp格式的分析的:,
  1)1-2:(这里的数字代表的是"字",即两个字节,下同)图像文件头。0x4d42=’BM’,表示是Windows支持的。(注意:查ascii表B 0x42,M0x4d,bfType 为两个字节,B为low字节,M为high字节所以bfType=0x4D42,而不是0x424D,但注意)
  2)3-6:整个文件大小。,为934。
  3)7-8:保留,必须设置为0。
  4)9-10:保留,必须设置为0。
  5)11-14:从文件开始到位图数据之间的(14+40+4*(2^biBitCount))。,为,上面的文件头就是35字=70字节。
  6)15-18:位图图信息头长度。
  7) 19-22:位图宽度,以像素为单位。,为8。
  8)23-26:位图高度,以像素为单位。,为4。
  9)27-28:位图的位面数,该值总是1。0100,为0001h=1。
  10)29-30:每个像素的位数。有1(单色),4(16色),8(256色),16(64K色,高彩色),24(16M色,真彩色),32(4096M色,增强型真彩色)。h=16。
  11)31-34:压缩说明:有0(不压缩),1(RLE 8,8位RLE压缩),2(RLE 4,4位RLE压缩,3(Bitfields,位域存放)。RLE简单地说是采用像素数+像素值的方式进行压缩。T408采用的是位域存放方式,用两个字节表示一个像素,位域分配为r5b6g5。图中为。
  12)35-38:用字节数表示的位图数据的大小,该数必须是4的倍数,上等于(≥位图宽度的最小的4的倍数)×位图高度×每个像素位数。为×90×2h=36864。
  13)39-42:用/米表示的。A00F
0FA0h=4000。
  14)43-46:用象素/米表示的垂直。A00F
0FA0h=4000。
  15)47-50:位图使用的颜色索引数。设为0的话,则说明使用所有调色板项。
  16)51-54:对图象显示有重要影响的颜色索引的数目。如果是0,表示都重要。
这54位信息非常重要,所以我做了一个尝试,验证是否是因为bmp图片的头信息的不同,造成了颜色的偏差呢?实验方法如下:其实很简单,第一步把保存前和保存后的bmp图片使用UltraEdit打开,把保存前的bmp图片的头即前54位的值,复制,粘贴到保存后的图片的头部,这样两张图的头信息都是保存前的那张图片的头。然后ctrl+s一下保存后的那张图片,再打开发现图片并没有变化。第一步,这回做相反的操作,即把保存后的bmp图片的头即前54位的值,复制,粘贴到保存前的图片的头部,发现也是没有变化,说明文件头不是影响颜色差异的原因。
此时只剩下
byte[] rgb = addBMP_RGB_888(pixels,w,h);此处的问题了,进入这个函数,仔细阅读,发现正是存储颜色信息的地方。 读下代码发现,原作者的代码有个bug。此处:
buffer[offset+1]=(byte)(b[j]&&16);
应该是buffer[offset+2]=(byte)(b[j]&&16);
即offset应该是+2,而非加1。更正错误之后,重新运行一下,发现保存后的图片颜色恢复正常,与原图片颜色相同,问题解决。
总结:不知道为什么经常遇到一些,网上很常见,但是却找不到合适我的问题的解决办法,很郁闷,网上很多的链接都是指向这个地址,但是进去了却没有更详细的说明。很遗憾,也很懊恼。希望网上能多分享些有用的,可行的解决方案,这对大家都有好处,免得浪费大家的搜索时间。
这里珍惜感谢csdn的那个博主,解决了我的问题。当然,使用别人的代码,也要多思考,不要轻易完全相信。
功夫小当家
浏览: 23884 次
来自: 北京
非常有用。谢谢!
这个也不好用了吗?之前这个办法,我这里可以解决,那你现在的办法 ...
设置-----&安全-----&未 ...
您好,感谢你写这篇技术文章,对我帮助很大,刚好用到,但是我需要 ...单色BMP图片显示问题
[问题点数:20分]
单色BMP图片显示问题
[问题点数:20分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关推荐:
2010年10月 专题开发/技术/项目大版内专家分月排行榜第二2010年7月 专题开发/技术/项目大版内专家分月排行榜第二
2011年1月 专题开发/技术/项目大版内专家分月排行榜第三2010年12月 专题开发/技术/项目大版内专家分月排行榜第三2010年8月 专题开发/技术/项目大版内专家分月排行榜第三
2010年7月 VC/MFC大版内专家分月排行榜第三2010年6月 VC/MFC大版内专家分月排行榜第三
2010年10月 专题开发/技术/项目大版内专家分月排行榜第二2010年7月 专题开发/技术/项目大版内专家分月排行榜第二
2011年1月 专题开发/技术/项目大版内专家分月排行榜第三2010年12月 专题开发/技术/项目大版内专家分月排行榜第三2010年8月 专题开发/技术/项目大版内专家分月排行榜第三
2010年10月 专题开发/技术/项目大版内专家分月排行榜第二2010年7月 专题开发/技术/项目大版内专家分月排行榜第二
2011年1月 专题开发/技术/项目大版内专家分月排行榜第三2010年12月 专题开发/技术/项目大版内专家分月排行榜第三2010年8月 专题开发/技术/项目大版内专家分月排行榜第三
2010年10月 专题开发/技术/项目大版内专家分月排行榜第二2010年7月 专题开发/技术/项目大版内专家分月排行榜第二
2011年1月 专题开发/技术/项目大版内专家分月排行榜第三2010年12月 专题开发/技术/项目大版内专家分月排行榜第三2010年8月 专题开发/技术/项目大版内专家分月排行榜第三
2010年10月 专题开发/技术/项目大版内专家分月排行榜第二2010年7月 专题开发/技术/项目大版内专家分月排行榜第二
2011年1月 专题开发/技术/项目大版内专家分月排行榜第三2010年12月 专题开发/技术/项目大版内专家分月排行榜第三2010年8月 专题开发/技术/项目大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
教你把BMP单色位图点阵弄到记事本里
下载积分:800
内容提示:教你把BMP单色位图点阵弄到记事本里
文档格式:DOC|
浏览次数:46|
上传日期: 08:04:34|
文档星级:
该用户还上传了这些文档
教你把BMP单色位图点阵弄到记事本里
官方公共微信单色BMP位图图像格式_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
单色BMP位图图像格式
单​色​B​M​P​位​图​图​像​格​式
阅读已结束,如果下载本文需要使用
想免费下载本文?
你可能喜欢21ic官方微信
后使用快捷导航没有帐号?
查看: 3503|回复: 15
请问,怎样在protel原理图中插入图片???
&&已结帖(0)
主题帖子积分
中级技术员, 积分 293, 距离下一级还需 7 积分
中级技术员, 积分 293, 距离下一级还需 7 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
中级技术员, 积分 293, 距离下一级还需 7 积分
中级技术员, 积分 293, 距离下一级还需 7 积分
请问,怎样在protel原理图中插入图片???
主题帖子积分
主题帖子积分
专家等级:结帖率:93%打赏:0.00受赏:15.35
主题帖子积分
原理图中插入图片?伯欠母?(正宗俄语"为死马",就记得这一
lz能说说用途吗,让俺也长长见识
主题帖子积分
资深工程师, 积分 15438, 距离下一级还需 4562 积分
资深工程师, 积分 15438, 距离下一级还需 4562 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
资深工程师, 积分 15438, 距离下一级还需 4562 积分
资深工程师, 积分 15438, 距离下一级还需 4562 积分
如此:把DrawingTools工具条打开.
主题帖子积分
高级技术员, 积分 720, 距离下一级还需 280 积分
高级技术员, 积分 720, 距离下一级还需 280 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
高级技术员, 积分 720, 距离下一级还需 280 积分
高级技术员, 积分 720, 距离下一级还需 280 积分
楼上插入的图片是真人么
主题帖子积分
主题帖子积分
专家等级:结帖率:78%
主题帖子积分
不是真人,难道是假人呀
主题帖子积分
技术达人, 积分 9353, 距离下一级还需 647 积分
技术达人, 积分 9353, 距离下一级还需 647 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
技术达人, 积分 9353, 距离下一级还需 647 积分
技术达人, 积分 9353, 距离下一级还需 647 积分
ls,人家是问是真人的真人照片么?
主题帖子积分
初级技术员, 积分 129, 距离下一级还需 -29 积分
初级技术员, 积分 129, 距离下一级还需 -29 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
初级技术员, 积分 129, 距离下一级还需 -29 积分
初级技术员, 积分 129, 距离下一级还需 -29 积分
试了一下挺有意思
主题帖子积分
助理工程师, 积分 1674, 距离下一级还需 326 积分
助理工程师, 积分 1674, 距离下一级还需 326 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
助理工程师, 积分 1674, 距离下一级还需 326 积分
助理工程师, 积分 1674, 距离下一级还需 326 积分
有点像《甘十九妹》里边那个男主角
主题帖子积分
中级技术员, 积分 293, 距离下一级还需 7 积分
中级技术员, 积分 293, 距离下一级还需 7 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
中级技术员, 积分 293, 距离下一级还需 7 积分
中级技术员, 积分 293, 距离下一级还需 7 积分
在PCB中插入图片有好的方法吗?
主题帖子积分
资深工程师, 积分 15438, 距离下一级还需 4562 积分
资深工程师, 积分 15438, 距离下一级还需 4562 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
资深工程师, 积分 15438, 距离下一级还需 4562 积分
资深工程师, 积分 15438, 距离下一级还需 4562 积分
PCB中的图片不能是任何WINDOWS格式.只能是TRACK.
因此你需要把图片转换为单色BMP文件,然后用BMP2PCB.EXE把图片转换为PROTEL&PCB格式...然后才能被复制和粘帖到PCB文件里.可以单纯用TRACK方式复制和粘帖.也可以把PCB&图片&做成FOOTPRINT.厂家的LOGO一般都用这个办法放在PCB上.这些形块是固定大小的.如果你需要其他大小的块,需要重新制作.&BMP2PCB&是一个DOS小程序.可以在WINDOWS的&命令提示符&下运行.网上有下载的.找找吧.
主题帖子积分
中级技术员, 积分 293, 距离下一级还需 7 积分
中级技术员, 积分 293, 距离下一级还需 7 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
中级技术员, 积分 293, 距离下一级还需 7 积分
中级技术员, 积分 293, 距离下一级还需 7 积分
我已经转换为PCB格式,但是打开没有图片,请指教,以前我好象操作成功过,现在忘记了。
主题帖子积分
技术总监, 积分 49873, 距离下一级还需 127 积分
技术总监, 积分 49873, 距离下一级还需 127 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
技术总监, 积分 49873, 距离下一级还需 127 积分
技术总监, 积分 49873, 距离下一级还需 127 积分
呵呵。。。原理图加密的方法
主题帖子积分
资深工程师, 积分 15438, 距离下一级还需 4562 积分
资深工程师, 积分 15438, 距离下一级还需 4562 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
资深工程师, 积分 15438, 距离下一级还需 4562 积分
资深工程师, 积分 15438, 距离下一级还需 4562 积分
你可能没有把"图"转到适当的LAYER.
我从来没有失手过.你多试吧.
主题帖子积分
主题帖子积分
专家等级:结帖率:58%
主题帖子积分
呵呵,不错的东东
主题帖子积分
资深技术员, 积分 468, 距离下一级还需 32 积分
资深技术员, 积分 468, 距离下一级还需 32 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
资深技术员, 积分 468, 距离下一级还需 32 积分
资深技术员, 积分 468, 距离下一级还需 32 积分
不错,长见识了··
主题帖子积分
助理工程师, 积分 1731, 距离下一级还需 269 积分
助理工程师, 积分 1731, 距离下一级还需 269 积分
主题帖子积分
专家等级:结帖率:50%
主题帖子积分
助理工程师, 积分 1731, 距离下一级还需 269 积分
助理工程师, 积分 1731, 距离下一级还需 269 积分
因此你需要把图片转换为单色BMP文件,然后用BMP2PCB.EXE把图片转换为PROTEL PCB格式...然后才能被复制和粘帖到PCB文件里.可以单纯用TRACK方式复制和粘帖.也可以把PCB&图片&做成FOOTPRINT.厂家的LOGO一般都用这个办法放在PCB上.
这些形块是固定大小的.如果你需要其他大小的块,需要重新制作.
BMP2PCB 是一个DOS小程序.可以在WINDOWS的&命令提示符&下运行.网上有下载的.找找吧.
人生若只如初见 当时只道是寻常。
时间类勋章
终身成就奖章
等级类勋章
坚毅之洋流
发帖类勋章
技术领袖奖章
人才类勋章
核心会员奖章
等级类勋章
沉静之湖泊
发帖类勋章
技术新星奖章
人才类勋章
永恒之光奖章
等级类勋章
技术导师奖章
人才类勋章
时间类勋章
精英会员奖章
等级类勋章
湍急之河流
发帖类勋章
技术高手奖章
人才类勋章
时间类勋章
时间类勋章
涓涓之细流
发帖类勋章
热门推荐 /1

我要回帖

更多关于 求大神ps的后果全集 的文章

 

随机推荐