摘要: 使用 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.

使用 ImageEnView 给图片加水印,及建缩略图的更多相关文章

  1. 火车头dede采集接口,图片加水印,远程图片本地化,远程无后缀的无图片本地化

    <?php /* [LocoySpider] (C)2005-2010 Lewell Inc. 火车采集器 DedeCMS 5.7 UTF8 文章发布接口 Update content: 图片加 ...

  2. thinkphp 3.2.3整合ueditor 1.4,给上传的图片加水印

    今天分享一下thinkphp 3.2.3整合ueditor 1.4,给上传的图片加水印.博主是新手,在这里卡住了很久(>_<) thinkphp 3.2.3整合ueditor 1.4 下载 ...

  3. PHPThumb处理图片,生成缩略图,图片尺寸调整,图片截取,图片加水印,图片旋转

    [强烈推荐]下载地址(github.com/masterexploder/PHPThumb). 注意这个类库有一个重名的叫phpThumb,只是大小写的差别,所以查找文档的时候千万注意. 在网站建设过 ...

  4. php 分享两种给图片加水印的方法

    本文章向码农们介绍 php 给图片加水印的两种方法,感兴趣的码农可以参考一下本文章的源代码. 方法一:PHP最简单的加水印方法 <?php // http://www.manongjc.com ...

  5. Java图片处理(二)图片加水印

    图片加水印,是通过图片重叠绘制实现的.实现代码如下: public static void press(String pressImg, String pressText, String target ...

  6. PHP给图片加水印

    <?php /** *图片加水印 *@param $srcImg 原图 *@param $waterImg 水印图片 *@param $savepath 保存路径 *@param $savena ...

  7. 如何用node.js批量给图片加水印

    上一篇我们讲了如何用node.js给图片加水印,但是只是给某一张图片加,并没有涉及到批量处理.这一篇,我们学习如果批量进行图片加水印处理. 一.准备工作: 首先,你要阅读完这篇文章:http://ww ...

  8. php对图片加水印--将图片先缩小,再在上面加水印

    方法: /**  * 图片加水印(适用于png/jpg/gif格式)  *  * @author flynetcn  *  * @param $srcImg  原图片  * @param $water ...

  9. php对图片加水印--将文字作为水印加到图片

    方法代码: /**  * 图片加水印(适用于png/jpg/gif格式)  *  * @author flynetcn  *  * @param $srcImg  原图片  * @param $wat ...

随机推荐

  1. linux php添加ftp扩展模块

    linux php添加ftp扩展模块 进入源码目录cd php-5.2.13/ext/ftp#运行phpize生成configure/usr/local/php/bin/phpize./configu ...

  2. Logback 整合 RabbitMQ 实现统一日志输出

    原文地址:Logback 整合 RabbitMQ 实现统一日志输出 博客地址:http://www.extlight.com 一.前言 公司项目做了集群实现请求分流,由于线上或多或少会出现请求失败或系 ...

  3. Go随机数的使用

    随机数使用比较广泛,例如,抽奖.均衡等等. 下面简单说明其使用方法. Example1 package main import ( "log" "math/rand&qu ...

  4. SQL Server-- 存储过程中错误处理

    一.存储过程中使用事务的简单语法 在存储过程中使用事务时非常重要的,使用数据可以保持数据的关联完整性,在Sql server存储过程中使用事务也很简单,用一个例子来说明它的语法格式: Create P ...

  5. [OI向?] ubuntu下一些常用的技巧

    想起来什么就写什么吧. Ubuntu下的对拍程序 python是最为简便的. from os import system while True: system("./make > in ...

  6. jmeter监控服务器的方法

    先下载Jmeter资源监控插件,我的百度云jmeter视频里面有说. 地址如下: JMeterPlugins-Standard-1.3.1.zip  下载 https://jmeter-plugins ...

  7. [转] with (nolock) 解释

    本文来自:http://blog.sina.com.cn/s/blog_5fafba5e010113kr.html select * from t1 WITH(NOLOCK) select * fro ...

  8. [转]IE6 的浮动

    IE6 的一个 BUG,(IE6 双倍边距 BUG),只要满足下面 3 个条件才会出现这个 BUG: 1)要为块状元素: 2)要左侧浮动: 3)要有左外边距(margin-left): 解决这个 BU ...

  9. 【转载】如何在 Github 上发现优秀的开源项目?

    之前发过一系列有关 GitHub 的文章,有同学问了,GitHub 我大概了解了,Git 也差不多会使用了,但是还是搞不清 GitHub 如何帮助我的工作,怎么提升我的工作效率? 问到点子上了,Git ...

  10. word2vec剖析,资料整理备存

    声明:word2vec剖析,资料整理备存,以下资料均为转载,膜拜大神,仅作学术交流之用. word2vec是google最新发布的深度学习工具,它利用神经网络将单词映射到低维连续实数空间,又称为单词嵌 ...