高级DIY文章大全

寒雨

普通会员
2003-06-02
475
0
0
[FONT=隶书]DIY软件[/FONT]

[FONT=隶书]铃声DIY[/FONT]
[FONT=隶书]图片DIY[/FONT]
[FONT=隶书]文字DIY[/FONT]
 

寒雨

普通会员
2003-06-02
475
0
0
[FONT=隶书]DIY软件[/FONT]

[FONT=隶书]铃声DIY[/FONT]
[FONT=隶书]图片DIY[/FONT]
[FONT=隶书]文字DIY[/FONT]
 

lefe

普通会员
2003-06-06
917
0
0
  首先解释一下扫描行的概念:扫描行指图像在存储器中一行像素的字节数据。现在我们来讨论计算机中的图像数据存储情况。
  图像数据字节阵列,一般都是正向的,扫描行由底向上进行存储,也就是说,阵列中最开始的字节表示图像的左下角。当然还有一类BMP是倒向的,在Potoshop7.0中另存BMP时有翻转行序的选项,这样的BMP,扫描行由顶向下进行存储,也就是说,阵列中最开始的字节表示图像的左上角。一般的,都是用的正向的BMP。
  图像扫描行的大小,取决于图象的颜色数目和用象素表示的图象宽度。
  BMP格式还有个非常重要的规定:要求每一扫描行的字节数据必须能被4整除,也就是Dword对齐(Dword是一种数据类型,长度为4个字节)。如果图像的一行字节数不能被4整除,就需要在每行的未尾补齐0以达到规定。
  设图像位数为N,图像宽为W(以像素数表示),高为H(以像素数表示),扫描行字节数为L,现在我们来看一下图像的一些情况。
  1、图像的颜色数=2的N次方。图像位数指像素用二进制数表示时的位数。16位图像的颜色数为2的16次方=65536,这就是我们常说的6万色了。
  2、一个字节是8位,这样每个像素所需字节数=N/8。
  3、图像每行的字节数=W*N/8
  4、图像每一扫描行的字节数L要求必须能被4整除。
   当W*N/8能被4整除时,L=W*N/8;
   当W*N/8不能被4整除时,需要在每行数据补零字节数为4-(W*N/8) Mod 4(Mod是求余运算,X mod Y指X除以Y的余数),这样L=W*N/8+4-(W*N/8) Mod 4。
  5、图像数据阵列的字节大小=L*H
  6、图像文件的大小,如果是用Photoshop保存的图像,除了文件头及数据阵列之外,还要加上未尾两个字节的0。文件头的大小,24位图为36h=54,16位r5g6b5图为46h=70,8位为436h=1078。
  例如:一幅16位r5g6b5的图像,N=16,若W=13,H=11,W*N/8=26不能被4整除,需要在每行数据后补零字节数4-26 Mod 4=2,在HW也就是每26个字节要补上0000。L=W*N/8+2=28。图像数据阵列字节大小=L*H=28*11=308,图像文件大小=308+70+2=380。
  T4/T5中的图像数据是16位r5g6b5格式的,但是不同于计算机中的r5g6b5,它并不要求扫描行能被4整除,所以不存在补零的问题。对r5grb6,由于W*N/8=W*16/8=W*2,所以当图像宽W为奇数时,如果把这样的r5g6b5往手机AXF中替换,必须把其中每行未尾补的两个字节的0去掉。
  对于T4/T5,其中的图像数据阵列大小直接就等于L*H=W*N/8*H=W*H*2。

  除了上述提到到的BMP格式,还有别的很多格式,有不同的讲究,尤其是8位BMP,还有个调色板的的问题。呵呵呵,希望大家看了不要发晕,我已经快晕了~~~~
 

guolei

普通会员
2003-06-12
244
0
0
这种办法太复杂了,有没有象108的那种办法呢?如果有希望斑竹能够造福与大家.谢谢!!!!!!