将png图像转换为jpg图像时,如何设置png的透明背景色转换为jpg的白色背景色
解决方案 »
- Delphi UTF8Encode 中文乱码问题
- 请教:一个判断语句的条件对吗??
- 问个弱问,知道的可能很简单
- QuickReport使用普通打印机没问题,使用专用打票打印机出错,程序都运行不起来,请问怎么解决~
- 如何动态创建计算字段?
- 急急急!!!用ado怎样访问远程sqlserver服务器(10.99.20.88/server1)
- filter问题
- 如何取得一 個字符的ASCII碼值啊?請看我的一小段程式。
- 祝贺csdn改版,放分
- 高薪聘用Delphi程序员
- RP爆发了,参加“虚拟社区研究调查”得了30元充值卡,散分了!
- 用delphi 如何实现在dbgrid编辑列的光标所在的置位插入一个字符
var
Clsid: TGUID;
Parameters: TEncoderParameters;
begin
// 设置编码品质参数
Parameters.Count := 1;
Parameters.Parameter[0].Guid := EncoderQuality;
Parameters.Parameter[0].ValueType := EncoderParameterValueTypeLong;
Parameters.Parameter[0].NumberOfValues := 1;
Parameters.Parameter[0].Value := @Quality;
GetEncoderClsid('image/jpeg', Clsid);
Jpg.Save(Filename, Clsid, @Parameters);
end;// GDI+画图像功能转换
procedure TForm1.Button1Click(Sender: TObject);
var
Png: TGpBitmap;
Jpg: TGpBitmap;
g: TGpGraphics;
begin
Png := TGpBitmap.Create('d:\xmas_011.png');
Jpg := TGpBitmap.Create(Png.Width, Png.Height, pf24bppRGB);
g := TGpGraphics.Create(Jpg);
g.Clear($FFFFFFFF); // 白色背景
g.DrawImage(Png, 0, 0, Png.Width, png.Height);
g.Free;
SaveJpg(Jpg, 'd:\1.jpg', 95); // 保存图片,质量为95
Jpg.Free;
Png.Free;
end;// 扫描线计算转换
procedure TForm1.Button2Click(Sender: TObject);
var
Png: TGpBitmap;
Jpg: TGpBitmap;
pData, jData: TBitmapData;
I, Count, Alpha: Integer;
ps, pd: PRGBQuad;
begin
Png := TGpBitmap.Create('d:\xmas_011.png');
Jpg := TGpBitmap.Create(Png.Width, Png.Height, pf32bppRGB);
pData := Png.LockBits(GpRect(0, 0, Png.Width, Png.Height),
[imRead], pf32bppARGB);
jData := Jpg.LockBits(GpRect(0, 0, Jpg.Width, Jpg.Height),
[imWrite], pf32bppARGB);
Count := jData.Width * jData.Height;
ps := pData.Scan0;
pd := jData.Scan0;
for I := 1 to Count do
begin
Alpha := ps^.rgbReserved;
// 前后2个255为RGB分量,255白色
pd^.rgbBlue := (Alpha * (ps^.rgbBlue - 255)) div 255 + 255;
pd^.rgbGreen := (Alpha * (ps^.rgbGreen - 255)) div 255 + 255;
pd^.rgbRed := (Alpha * (ps^.rgbRed - 255)) div 255 + 255;
Inc(ps);
Inc(pd)
end;
Jpg.UnlockBits(jData);
Png.UnlockBits(pData);
SaveJpg(Jpg, 'd:\2.jpg', 95); // 保存图片,质量为95
Jpg.Free;
Png.Free;
end;