精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● Delphi>>图形界面和窗体>>Re:怎样获得一BMP图像的长、宽和大小

主题:Re:怎样获得一BMP图像的长、宽和大小
发信人: d_fang()
整理人: soaringbird(2001-08-09 19:27:54), 站内信件
【 在 netunite 的大作中提到:】
:
:......
读出该图片的高和宽,通过下列代码实现了该功能
……
type
  tgifheader = packed record
    signature: array[0..2] of char;
    version: array[0..2] of char;
    screenwidth: word;
    screenheight: word;
    packedfields,
    backgroundcolorindex,
    aspectratio: byte;
  end;
    tgifinfoheader = tgifheader;
……    
procedure ttempphoto.addmediarec(out content_no, succed, errno,
  errmsg: olevariant; const picname, title, author, theme, publishdate,
  keyword: widestring; length: sysuint; const memo: widestring; pichight,
  picwidth, color_pan: sysuint; content: olevariant; payno: sysint;
  const groupno: widestring);
file://过程中部分相关的代码
var
    p : pwidechar;
    bb : string;
    tempchar : integer;
    mm : sysuint;
    jpeg: tjpegimage;
    gif:tgifinfoheader;
    bmp:tbitmapinfoheader;
    phowidth: integer;
    phoheight: integer;
    ss:tstringstream;
    fileheader:tbitmapfileheader;
begin
……
       
       p := tvardata(content).volestr;
       setlength(bb,length);
       mm := 1;
       while mm<=length do
begin
tempchar := integer(p[(mm-1) div 2]);
bb[mm]:= chr(tempchar mod 256);
if mm mm := mm+2;
end;
file://读取图片的高和宽
ss:=tstringstream.create(bb);
if ((picname='jpg')or(picname='jpeg')) then begin
jpeg:= tjpegimage.create;//需uses jpeg
jpeg.loadfromstream(ss);
phowidth:=jpeg.width;
phoheight:=jpeg.height;
jpeg.free;
end
file://根据自己定义的gif格式图片文件头信息读取图片的高和宽
else if (picname='gif') then begin
ss.read(gif,sizeof(gif));
phowidth:=gif.screenwidth;
phoheight:=gif.screenheight;
end
file://根据windows单元定义的bmp格式图片文件头信息读取图片的高和宽
else if (picname='bmp') then begin
ss.read(fileheader,sizeof(fileheader));
ss.read(bmp,sizeof(bmp));
phowidth:=bmp.biwidth;
phoheight:=bmp.biheight;
end
else begin
end;
ss.free;
……
end;



----
欢迎访问方文设计室!!
立即下载data2000,包含1000多个delphi技巧!!!



  

[关闭][返回]