摘要: 使用 ImageEnView 给图片加水印,及建缩略图

{Power by hzqghost@21cn.com}
unit CutWater;

interface

uses
  Math,imageenview,
  SysUtils, Classes, Graphics;

procedure CutImg(src,dest:string;width,height:Integer);//截图
procedure Water(src,png:string);//水印
implementation

procedure 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.

最新文章

  1. sessionState详解
  2. Java多线程系列--“JUC锁”09之 CountDownLatch原理和示例
  3. 【原】MAC显示隐藏文件夹命令
  4. final关键字用法总结
  5. 解读HTML 5新语法 提高语义价值
  6. Uva 11478 Halum操作
  7. Java中的Timer和TimerTask在Android中的用法(转)
  8. VSPM虚拟串口使用
  9. 学了C语言,如何利用CURL写一个下载程序?—用nmake编译CURL并安装
  10. TFS 2010 使用手册(四)备份与恢复
  11. Redis中hash表中的field的value自增可以用hincrby
  12. OC Protocol----协议
  13. linux上安装rar解压软件
  14. java.io.serializable
  15. [iOS Animation]-CALayer 缓冲
  16. C#,COM口,接收,发送数据
  17. 改进ban冒泡排序
  18. uni-app编写小程序
  19. struts2框架之请求参数(参考第二天学习笔记)
  20. Nginx反向代理400错误

热门文章

  1. Jenkins进阶-Gitlab使用Webhook实现Push代码自动部署(3)
  2. tyvj1035棋盘覆盖——二分图匹配
  3. Microsoft Dynamics CRM2011 Javascript
  4. python 如何将md5转为16字节
  5. python格式化输出 format
  6. bzoj1212 L语言
  7. 数据库启动失败:The server quit without updating PID file
  8. 导入testng管理测试用例
  9. jquery拖动分页
  10. GROUP BY关键字与WITH ROLLUP一起使用