gdiplus 水印_Delphi程序的应用GDI+制作水印效果图片
利用GDI+可以很方便的制作带水印效果的图片,网上介绍这方面的文章也很多,但鲜有Delphi的,本文参照网上文章http://www.codeproject.com/KB/GDI-plus/watermark.aspx介绍的方法,用Delphi 2007制作水印效果图片,原代码如下:
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Gdiplus, StdCtrls;
type
TMainForm = class(TForm)
Button1: TButton;
procedure FormPaint(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
Phot TGpImage;
PhWidth: Integer;
PhHeight: Integer;
Watermark: TGpImage;
WmWidth: Integer;
WmHeight: Integer;
Bmp: TGpBitmap;
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
uses GdipTypes;
{$R *.dfm}
procedure TMainForm.Button1Click(Sender: TObject);
var
Clsid: TGUID;
Parameters: TEncoderParameters;
Quality: Integer;
begin
// 设置图像品质编码参数
Parameters.Count := 1;
Parameters.Parameter[0].Guid := EncoderQuality;
Parameters.Parameter[0].ValueType := EncoderParameterValueTypeLong;
Parameters.Parameter[0].NumberOfValues := 1;
// 设置参数的值:品质等级,最高为100,图像文件大小与品质成正比
Quality := 100;
Parameters.Parameter[0].Value := @Quality;
if GetEncoderClsid('image/jpeg', Clsid) then
Bmp.Save('WatermarkPhoto.jpg', Clsid, @Parameters);
end;
procedure TMainForm.FormCreate(Sender: TObject);
const
ColorMatrix: TColorMatrix =
(
(1.0, 0.0, 0.0, 0.0, 0.0),
(0.0, 1.0, 0.0, 0.0, 0.0),
(0.0, 0.0, 1.0, 0.0, 0.0),
(0.0, 0.0, 0.0, 0.3, 0.0),
(0.0, 0.0, 0.0, 0.0, 1.0)
);
WorkingDirectory = '....Media';
copyright = 'Copyright © 2008 - Maozefa';
var
gp: TGpGraphics;
imageAttr: TGpImageAttributes;
strFormat: TGpStringFormat;
font: TGpFont;
x, y: Single;
begin
// 读取原始图片
Photo := TGpImage.Create(WorkingDirectory + '100_0349.jpg');
PhWidth := Photo.Width;
PhHeight := Photo.Height;
// 读取水印图片
Watermark := TGpImage.Create(WorkingDirectory + 'Watermark.bmp');
WmWidth := Watermark.Width;
WmHeight := Watermark.Height;
// 建立一个新的位图,分辨率为72
Bmp := TGpBitmap.Create(PhWidth, PhHeight, pf32bppArgb);
Bmp.SetResolution(72, 72);
// 建立新位图的画布,并设置图像显示质量和文本显示质量
gp := TGpGraphics.Create(Bmp);
gp.SmoothingMode := smAntiAlias;
gp.TextRenderingHint := thAntiAlias;
// 在画布上画原始图片
gp.DrawImage(Photo, GpRect(0, 0, PhWidth, PhHeight),
0, 0, PhWidth, PhHeight, utPixel);
// 建立图像显示辅助类
imageAttr := TGpImageAttributes.Create;
// 设置透明颜色为水印图片四角的底色,水印图显示为圆角图片
imageAttr.SetColorKey($ff00ff00, $ff00ff00, ctBitmap);
// 设置水印图片不透明度为0.3
imageAttr.SetColorMatrix(ColorMatrix, cfDefault, ctBitmap);
// 在画布左上角画水印图
gp.DrawImage(Watermark, GpRect({PhWidth - WmWidth - }10, 10, WmWidth, WmHeight),
0, 0, WmWidth, WmHeight, utPixel, imageAttr);
// 设置文本字体和显示格式
font := TGpFont.Create('arial', 16, [fsBold]);
strFormat := TGpStringFormat.Create;
strFormat.Alignment := saCenter;
// 在画布下方居中显示阴影文本
x := PhWidth / 2;
y := PhHeight - 26;
gp.DrawString(copyright, font, Brushs[$99000000], x + 1, y + 1, strFormat);
gp.DrawString(copyright, font, Brushs[$99ffffff], x, y, strFormat);
font.Free;
strFormat.Free;
imageAttr.Free;
gp.Free;
end;
procedure TMainForm.FormDestroy(Sender: TObject);
begin
Photo.Free;
Watermark.Free;
Bmp.Free;
end;
procedure TMainForm.FormPaint(Sender: TObject);
var
g: TGpGraphics;
begin
g := TGpGraphics.Create(Canvas.Handle);
// 显示原始图片
g.DrawImage(Photo, 0, 0, PhWidth, PhHeight);
// 显示水印原始图片
g.TranslateTransform(0, PhHeight + 5);
g.DrawImage(Watermark, 0, 0, WmWidth, WmHeight);
// 显示带水印和文本的图像
g.TranslateTransform(PhWidth, -(PhHeight + 5));
g.DrawImage(Bmp, 0, 0, PhWidth, PhHeight);
g.Free;
end;
end.
gdiplus 水印_Delphi程序的应用GDI+制作水印效果图片相关推荐
- 怎样使用PS制作木刻效果图片?添加木刻特效原来这么简单!
使用PS可以制作出各种各样效果的图片,今天小编教大家一种如何在PS上制作木刻特效图片,学会之后,我们又可以离PS大神进一步了. 第一步:先打开我们电脑上的PS,然后使用快捷方式[Ctrl+O]将我们需 ...
- 免费加水印小程序怎么制作
免费加水印小程序怎么制作 全屏水印 全文覆盖,完全保护 隐形水印 肉眼不可见,隐形保护 超级横幅 更多用于宣传 专属水印 头像+昵称就制作水印 完整资源获取 项目获取:typora: typora/i ...
- 【转】C#使用GDI+制作背景颜色淡入淡出效果的按钮
C#使用GDI+制作背景颜色淡入淡出效果的按钮 2010-04-14 来自:CNBLOG 字体大小:[大 中 小] 摘要:本文介绍C#使用GDI+制作背景颜色淡入淡出效果的按钮,并提供完整的示例和 ...
- 碉堡的小程序:用 Python 制作演示迷宫算法的 gif 动画
微信改版,加星标不迷路! 碉堡的小程序:用 Python 制作演示迷宫算法的 gif 动画 作者:neozhaoliang 本文要介绍的是我写的一个有趣的小程序,一个脱离了低级趣味的程序,一个有益于广 ...
- matlab水印剪切攻击程序,可以运行的水印matlab程序(嵌入,提取,攻击测试等).doc
可以运行的水印matlab程序(嵌入,提取,攻击测试等).doc IMREAD YUANSHITUXIANGBMP SUBPLOT2,2,1IMSHOWTITLE 原始图像 WATERIMREAD W ...
- jetson nano 系统镜像制作_参考备份Jetson Nano系统(该程序不完备,制作的image不可用,仅供)...
参考备份Jetson Nano系统(该程序不完备,制作的image不可用,仅供) #!/usr/bin/python3 # -*- coding: utf-8 -*- ""&quo ...
- 微信小程序--优购页面制作
优购–项目 这个项目学习源自:黑马程序员微信小程序开发前端教程_零基础玩转微信小程序-哔哩哔哩 想要更深入的了解此项目,就去黑马程序员学习该项目.该项目个人觉得对于初学者来说是有很大的帮助的.做好该项 ...
- 教你在CorelDRAW中制作水印
水印是一种数字保护的手段,在图像上添加水印即能证明本人的版权,还能对版权的保护做出贡献.也就是在图片上打上半透明的标记,因其具有透明和阴影的特性,使之不管在较为阴暗或明亮的图片上都能完美使用,嵌入的水 ...
- 在小程序中实现海报制作
wx.canvasToTempFilePath(object, component) 通过这个方法把画布的指定区域的内容导出生成指定大小的图片,并返回一个文件路径. 这里容易出现的问题就是生成的 ...
最新文章
- python pycurl
- 如何向 Microsoft 管理控制台添加证书管理器
- Post请求如何取消异步
- C++学习之路 | PTA乙级—— 1029 旧键盘 (20 分)(精简)
- kettle定时调度
- python gif转jpg_PIL-将GIF帧转换为JPG
- 【多线程】如何保证线程安全
- springMVC+mybatis
- 惠普服务器关机自动重启,HP笔记本关机自动重启的解决办法
- URL.createObjectURL()方法
- oracle无法进入nomount状态,数据库进入nomount状态
- c# 容联云_迅雷云加速开放平台c#demo
- win10清理_小学生都会:win10设置自动清理缓存和垃圾文件
- 游戏开发中常用的算法1(20道题一篇文章)
- Hello World, Hello, 2021
- 五个温度带的分界线_初中地理知识点:我国的温度带
- 10款常用的原型设计工具,包含一键生成原型工具
- mysql取数据库时间函数_MySQL数据库—日期与时间函数
- 分享一副现实版抽象画
- 计算机培训spss,[计算机软件及应用]SPSS 统计软件培训.ppt