程序生成BMP图像(50分)

  • 主题发起人 主题发起人 forceboy
  • 开始时间 开始时间
F

forceboy

Unregistered / Unconfirmed
GUEST, unregistred user!
在DELPHI中如何用程序来生成一张256级灰度的图像?
望各位教我 ̄ ̄不胜感激
 
什么图像?
 
晕 , 人家都说了 --》 “一张256级灰度的图像” 。
我想,首先应该了解图片文件的格式。。我不清楚。:)
 
在cavans上畫出, 然後save為bmp不就行了嗎???
 
各位呀 ̄ ̄不要这样子说呀 ̄ ̄是要原代码的啦 ̄ ̄
 
呵呵,简单
procedure TMainForm.Createbitmap(const kuan,gao: integer);
begin
bitmap:=tbitmap.Create ;
bitmap.PixelFormat :=pf8bit;
bitmap.Width :=kuan;
bitmap.Height :=gao;
end;
 
bitmap为全局变量,这样一张bmp图片就生成了,当然调色板你可以自己定义
 
那么我要指定图片的内容我该怎么做呢??
 
看看有没有loadfromfile方法
 
procedure TForm1.Button1Click(Sender: TObject);
var Fullscreen:Tbitmap;
FullscreenCanvas:TCanvas;
Dc:HDC;
x,y, K: Integer;
P : PByteArray;
begin
Hide;
Fullscreen := TBitmap.Create;
Fullscreen.Width := screen.width;
Fullscreen.Height := screen.Height;
DC:=GetDC(0);
try
FullscreenCanvas := TCanvas.Create; //创建一个CANVAS对象
try
FullscreenCanvas.Handle := DC;
Fullscreen.Canvas.CopyRect(Rect(0, 0, screen.Width, screen.Height), fullscreenCanvas,Rect (0, 0, Screen.Width, Screen.Height));
finally
FullscreenCanvas.Free; //释放CANVAS对象
end;
finally
ReleaseDC (0, DC); //释放DC
end;

//*******************************
Fullscreen.PixelFormat:=pf24bit;
for y:=0 to Fullscreen.Height -1 do
begin
P := Fullscreen.ScanLine[y];
for x := 0 to Fullscreen.Width -1 do
begin
K :=(P[x*3]+P[x*3+1]+P[x*3+2])Div 3;
P[x*3] := K;
P[x*3+1] := K;
P[x*3+2] := K;
end;
end;
//Fullscreen.PixelFormat:=pf8bit;
//*******************************
image1.picture.Bitmap:=fullscreen;//拷贝下的图象赋给IMAGE对象
image1.Width:=fullscreen.Width;
image1.Height:=fullscreen.Height;

fullscreen.free; //释放bitmap

Show; //显示窗口
end;
 
你要加载什么?数据吗?

你可以用流很方便的操作,用流的方式打开源文件,定位到数据部分,复制到目标文件即可。要注意的是bmp数据存放和显示的顺序是反的
 

Similar threads

后退
顶部