这个图片水印代码 我试了为何不行? ( 积分: 100 )

  • 主题发起人 主题发起人 Banknote
  • 开始时间 开始时间
B

Banknote

Unregistered / Unconfirmed
GUEST, unregistred user!
{水印效果
参数:WaterMark 水印图片
Source 待加水印的图片
Left 水印位置
Top 水印位置
AlphaValue 透明度
TransColor 水印图片透明色
}

procedure BmpWaterMark(WaterMark,Source:TBitmap;Left,Top,AlphaValue:Integer;TransColor:TColor=0);
var
x,y:Integer;
R,Rs,Rw,G,Gs,Gw,B,Bs,Bw:Integer;
Wcl,Scl:TColor;
Begin
For x:=0 to WaterMark.Width-1 do
Begin
For y:=0 to WaterMark.Height-1 do
Begin
Wcl:=WaterMark.Canvas.Pixels[x,y];
IF (TransColor<>0)and(Wcl=TransColor) then Continue;

Rw:=GetRValue(ColorToRGB(Wcl));
Gw:=GetGValue(ColorToRGB(Wcl));
Bw:=GetBValue(ColorToRGB(Wcl));

Scl:=Source.Canvas.Pixels[x+Left,y+Top];
Rs:=GetRValue(ColorToRGB(Scl));
Gs:=GetGValue(ColorToRGB(Scl));
Bs:=GetBValue(ColorToRGB(Scl));

R:=((AlphaValue*Rw)+((255-AlphaValue)*Rs))div 256;
G:=((AlphaValue*Gw)+((255-AlphaValue)*Gs))div 256;
B:=((AlphaValue*Bw)+((255-AlphaValue)*Bs))div 256;

Source.Canvas.Pixels[x+Left,y+Top]:=RGB(R,G,B);
End;
End;
End;

procedure TForm1.Button1Click(Sender: TObject);
begin
BmpWaterMark(Image2.picture.bitmap,image1.picture.bitmap,200,30,100);
end;

我按照例子,FORM上放了 2个图片,一个按钮,点击按钮后,2个图片都没有了。
 
我用你的代码试了一下,没问题。注意:两个图片格式都必须是 bmp 格式。
 
哦,原来如此,我用的都是JPG格式,现在都是这个格式,不知道JPG格式怎么修改代码?
 
GIF呢?是否也可以?
 
gif 也不行,只能 bmp。其它格式,你必须先进行格式转换。
 
后退
顶部