使用 ImageEnView 给图片加水印,及建缩略图
摘要: 使用 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 给图片加水印,及建缩略图的更多相关文章
- 火车头dede采集接口,图片加水印,远程图片本地化,远程无后缀的无图片本地化
<?php /* [LocoySpider] (C)2005-2010 Lewell Inc. 火车采集器 DedeCMS 5.7 UTF8 文章发布接口 Update content: 图片加 ...
- thinkphp 3.2.3整合ueditor 1.4,给上传的图片加水印
今天分享一下thinkphp 3.2.3整合ueditor 1.4,给上传的图片加水印.博主是新手,在这里卡住了很久(>_<) thinkphp 3.2.3整合ueditor 1.4 下载 ...
- PHPThumb处理图片,生成缩略图,图片尺寸调整,图片截取,图片加水印,图片旋转
[强烈推荐]下载地址(github.com/masterexploder/PHPThumb). 注意这个类库有一个重名的叫phpThumb,只是大小写的差别,所以查找文档的时候千万注意. 在网站建设过 ...
- php 分享两种给图片加水印的方法
本文章向码农们介绍 php 给图片加水印的两种方法,感兴趣的码农可以参考一下本文章的源代码. 方法一:PHP最简单的加水印方法 <?php // http://www.manongjc.com ...
- Java图片处理(二)图片加水印
图片加水印,是通过图片重叠绘制实现的.实现代码如下: public static void press(String pressImg, String pressText, String target ...
- PHP给图片加水印
<?php /** *图片加水印 *@param $srcImg 原图 *@param $waterImg 水印图片 *@param $savepath 保存路径 *@param $savena ...
- 如何用node.js批量给图片加水印
上一篇我们讲了如何用node.js给图片加水印,但是只是给某一张图片加,并没有涉及到批量处理.这一篇,我们学习如果批量进行图片加水印处理. 一.准备工作: 首先,你要阅读完这篇文章:http://ww ...
- php对图片加水印--将图片先缩小,再在上面加水印
方法: /** * 图片加水印(适用于png/jpg/gif格式) * * @author flynetcn * * @param $srcImg 原图片 * @param $water ...
- php对图片加水印--将文字作为水印加到图片
方法代码: /** * 图片加水印(适用于png/jpg/gif格式) * * @author flynetcn * * @param $srcImg 原图片 * @param $wat ...
随机推荐
- 如何调试触发器-MSSQL (转帖)
调试触发器 //------------------------------------- 作者:四海为圈(原创) //------------------------------------- 1. ...
- 【selenium】XPATH语法(一)
XPath 使用路径表达式来选取 XML 文档中的节点或节点集.节点是通过沿着路径 (path) 或者步 (steps) 来选取的. 我们将在下面的例子中使用这个 XML 文档. <?xml v ...
- Oracle 10g下emctl start dbconsole 报错:OC4J Configuration issue 问题解决
http://blog.sina.com.cn/s/blog_95b5eb8c0100x4a7.html http://blog.csdn.net/sz_bdqn/article/details/17 ...
- vim配置之目录结构
我喜欢作配置分离,这样比较好管理,这里直接贴一下tree的目录结构 xxx@debian:~/vimConfig$ tree . ├── install │ ├── install.sh │ ...
- BASIC-8_蓝桥杯_回文数
示例代码: #include <stdio.h> int main(void){ int i = 0 ; int a = 0 , b = 0 , c = 0 , d = 0 ; for ( ...
- 【转】深入理解java异常处理机制
深入理解java异常处理机制 ; int c; for (int i = 2; i >= -2; i--) { c = b / i; System.out.println("i=&qu ...
- PHP include 和 require 语句 (调用其他php文件进来的方法)
PHP include 和 require 语句通过 include 或 require 语句,可以将 PHP 文件的内容插入另一个 PHP 文件(在服务器执行它之前). require 会生成致命错 ...
- 用Keras搭建神经网络 简单模版(三)—— CNN 卷积神经网络(手写数字图片识别)
# -*- coding: utf-8 -*- import numpy as np np.random.seed(1337) #for reproducibility再现性 from keras.d ...
- (jsp/html)网页上嵌入播放器(常用播放器代码整理) http://www.jb51.net/article/37267.htm
网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助 这个其实很简单,只要在HTML上添加以上代码就O ...
- 在ubuntu中如何向U盘复制粘贴文件 Read-only file system
1. 重新挂载被操作分区的读写权限,如U盘 $ sudo mount -o remount,rw /media/lenmom/00093FA700017B96 #U盘挂载目录,如果是系统中的其他盘, ...