我用IMAGEENVIEW控件实现把两个图片合并在一起.实现的原理就是通过IMAGEENVIEW.Layersadd增加层.
但是把两层合并后.保存为PDF格式的只是一张图片.我想要是分层的?可以在PHOTOSHOP里编辑的.如何实现?
但是把两层合并后.保存为PDF格式的只是一张图片.我想要是分层的?可以在PHOTOSHOP里编辑的.如何实现?
解决方案 »
- delphi menu 子菜单横向显示
- 希望得到一个很大的SQL文件,应该用什么类型从DLL向宿主程序返回参数?
- 为什么我用DELPHI7编的东西杀毒软件都提示有病毒?
- 拜托大家--还是那个多媒体演示系统,很简单的要求,但是.......
- 我在做删除文件的时候,用deletefile只能删除文件,而不能删除文件夹,怎么办啊??
- 请教各位delphi大侠,打印及简单导入Excel
- 如何设置目录的访问权限?
- 这种软件是如何做的
- 求助关于Delphi
- 如何在程序中像Delphi设计阶段那样在一个控件周围加上一个有8个点的框,并能拖动控件的大小,多谢各位了,帮帮小弟吧!
- 关于MS-SQL存储过程XP_CMDSHELL命令在DELPHI中的写法,有谁会写呀.
- 关于一个图片合并的问题!!!在线等!!!
unit CutWater;interfaceuses
Math,imageenview,
SysUtils, Classes, Graphics;procedure CutImg(src,dest:string;width,height:Integer);//截图
procedure Water(src,png:string);//水印
implementationprocedure CutImg(src,dest:string;width,height:Integer);
var
ImageEnView1:TImageEnView;
Bigratio,ratio:Extended;
ReTop,ReLeft,ReWidth,ReHeight:Integer;
Blur:Extended;
begin
ImageEnView1:=TImageEnView.Create(nil);
ImageEnView1.IO.Bitmap.Canvas.Pen.Color := clWhite;
ImageEnView1.IO.Bitmap.Canvas.Pen.Style := psSolid;
ImageEnView1.IO.Bitmap.Canvas.Brush.Color := clWhite;
ImageEnView1.IO.Bitmap.Canvas.Brush.Style := bsSolid;
ImageEnView1.IO.LoadFromFileJpeg(src);
ReWidth:=width;
ReHeight:=height;
if width>ImageEnView1.Bitmap.Width then
ReWidth := ImageEnView1.Bitmap.Width;
if height>ImageEnView1.Bitmap.height then
ReHeight := ImageEnView1.Bitmap.height;
Bigratio:=ImageEnView1.Bitmap.Width/ImageEnView1.Bitmap.Height;
ratio:=ReWidth/ReHeight;
if ratio > Bigratio then
begin
ReWidth:=Round(ReHeight*Bigratio);
end else if ratio < Bigratio then begin
ReHeight:=Round(ReWidth/Bigratio);
end;
if (width>ImageEnView1.Bitmap.Width) and (height>ImageEnView1.Bitmap.height) then
Blur:=0
else
Blur:=(ImageEnView1.Bitmap.Width/ReWidth)/4+0.2;
ImageEnView1.Proc.Blur(Blur);
ReTop:=Round((height-ReHeight)/2);
ReLeft:=Round((width-ReWidth)/2);
ImageEnView1.IO.Bitmap.Canvas.StretchDraw(Rect(0, 0, ReWidth, ReHeight),ImageEnView1.Bitmap);
ImageEnView1.Bitmap.Width :=width;
ImageEnView1.Bitmap.Height :=height;
if (ReLeft>0) or (ReTop>0) then
begin
ImageEnView1.IO.Bitmap.Canvas.Draw(ReLeft,ReTop,ImageEnView1.Bitmap);
ImageEnView1.IO.Bitmap.Canvas.Rectangle(0,0,width,ReTop);
ImageEnView1.IO.Bitmap.Canvas.Rectangle(ReWidth+ReLeft,0,width,height);
ImageEnView1.IO.Bitmap.Canvas.Rectangle(0,ReHeight+ReTop,width,height);
ImageEnView1.IO.Bitmap.Canvas.Rectangle(0,0,ReLeft,height);
end;
ImageEnView1.IO.SaveToFileJpeg(dest);
ImageEnView1.Free;
end;
procedure Water(src,png:string);
var
X,Y:Integer;
ImageEnView1:TImageEnView;
jpgWidth,jpgHeight:Integer;
pngWidth,pngHeight:Integer;
begin
ImageEnView1:=TImageEnView.Create(nil);
ImageEnView1.IO.LoadFromFilePNG(png);
pngWidth:=ImageEnView1.Bitmap.Width;
pngHeight:=ImageEnView1.Bitmap.Height;
ImageEnView1.LayersAdd;
ImageEnView1.IO.LoadFromFileJpeg(src);
jpgWidth:=ImageEnView1.Bitmap.Width;
jpgHeight:=ImageEnView1.Bitmap.Height;
X := Round((ImageEnView1.Bitmap.Width-pngWidth) / 2);
Y := Round((ImageEnView1.Bitmap.Height-pngHeight) / 2);
ImageEnView1.Layers[0].PosX := X;
ImageEnView1.Layers[0].PosY := Y;
ImageEnView1.LayersMerge(1, 0);
ImageEnView1.Bitmap.Width:=jpgWidth;
ImageEnView1.Bitmap.Height:=jpgHeight;
ImageEnView1.IO.SaveToFileJpeg(src);
ImageEnView1.Free;
end;end.
你发了多少次啊?兄弟。给你,你看是不是你想要的??