路过的大虾帮看看,
以下的代码是实现:任意图片格式转成BMP图片,但为什么最后我输出的图片格式大小是0,图片格式不对?
//任意格式转BMP
function AnyToBmp(Img1:string):TBitmap;
var
P : TPicture ;
bmp1:TBitmap;
begin
try
p:=TPicture.Create;
p.LoadFromFile(Img1); bmp1 := TBitmap.Create;
bmp1.PixelFormat := pf24bit; //将图片文件转换为24格式的位图
with bmp1 do
begin
Width := p.Width;
Height := p.Height;
Canvas.Draw(0,0,p.Graphic);
end;
Result:=bmp1;
finally
p.Free;
bmp1.Free;
end;
end;//调用
AnyToBmp(OpenDialog2.FileName).SaveToFile('C:\111.bmp');
解决方案 »
- 在dbgrid中用图标显示某个逻辑字段时,通过双击改变该字段内容,如何避免True或False被显示出来
- 如何动态的将BDE的TDATABASE控件和mssqlserver连接起来.
- 面试试题。
- 求一段代码用来去除HTML文件里的<XXXX>标签,只留文字部分!谢谢!
- 关于MSCOMM的问题(急)!!!
- 简单数据库问题!!!!
- 为何在用ADOQUERY进行插入操作时总报错????在线送分!!!!!
- 控制windows启动
- help!还是没解决!!!
- 能否不在database Desktop,在Delphi用TTable控件建立索引文件.(DBF)
- 如何打开CHM文件,然后定位到某个节点。
- 初学数据库第一天
function AnyToBmp(Img1:string):TBitmap;
var
P : TPicture ;
bmp1:TBitmap;
begin
Result:=TBitmap.Create; // <------------- 加上
try
p:=TPicture.Create;
p.LoadFromFile(Img1); bmp1 := TBitmap.Create;
bmp1.PixelFormat := pf24bit; //将图片文件转换为24格式的位图
with bmp1 do
begin
Width := p.Width;
Height := p.Height;
Canvas.Draw(0,0,p.Graphic);
end;
Result.Assign(bmp1); // <---------- bmp1复制到result
finally
p.Free;
bmp1.Free;
end;
end;// 调用var
bmp:TBitmap;
begin
bmp:=AnyToBmp(OpenDialog2.FileName);
bmp.SaveToFile('C:\111.bmp');
bmp.Free;
end;
另外注意,TPicture 并不支持所有类型的图片,所以你说的把任意图片转换,你这个函数做不到