求将BMP转换为点阵的算法?分不够可以加!(200分)

  • 主题发起人 惊弓之亮
  • 开始时间

惊弓之亮

Unregistered / Unconfirmed
GUEST, unregistred user!
如题,将一BMP图转换为点阵数组
 
没看懂题目哦
 
用EPS/POS指令打印位图时,需要把位图转换成对应的二维数组作为参数,即点阵,求算法
 
哦这还需要什么算法吗
 
问个白痴的问题 你所说的点阵二维数组 不会就是图象的象素数组吧
 
其实就是BMP的编码规范,到网上搜一下,找到BMP的编码规范研究一下,很简单的。
好象CSDN上就有
 
TCanvas.Pixels属性就是一个二维数组,它的每个元素代表一个其上的一个像素
的TColor值,如果你不怕慢,就一个一个的读:
procedure TForm1.Button2Click(Sender: TObject);
var
Mybmp:TBitmap;
i,j:integer;
ResArr:array of array of TColor;
begin
Mybmp:=TBitmap.Create;
Mybmp.LoadFromFile('d:/75.bmp');
SetLength(ResArr,Mybmp.Height,Mybmp.Width);
for i:=0 to Mybmp.Height-1 do
for j:=0 to Mybmp.Width-1 do
ResArr[i,j]:=Mybmp.Canvas.Pixels[i,j];
end;
 
基本上如beyondair,只不过要加一些功能,因为图像有颜色,在程序中读入不同的颜色用
不同的字符来代替就可行了。
 
加上一点:
设 Mybmp.PixelFormat = fp1bit,pf4bit,pf8bit,pf16bit,pf24bit ,
再读图片,就可以很容易分别取得 黑白图、二级灰度、四级灰度、十六级灰度和各颜色
的图片数据。
 
原意是要用ESC/POS指令打印位图
ESC * m n1 n2 [d]k
m为点图方式 (n1,n2)为点数,点图内容为[d]k
水平方向点数为n1+256*n2
d为点图数据字节,相应为1则表示该打印,为0则不打印
位图经过转换后,参数该怎么传?
请大家再帮忙看看,以上解决的问题分照给
 
我看你是需要BMP的文件格式,你去找找BMP文件格式的资料看看吧!
 
太久了.....
 
顶部