利用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+制作水印效果图片相关推荐

  1. 怎样使用PS制作木刻效果图片?添加木刻特效原来这么简单!

    使用PS可以制作出各种各样效果的图片,今天小编教大家一种如何在PS上制作木刻特效图片,学会之后,我们又可以离PS大神进一步了. 第一步:先打开我们电脑上的PS,然后使用快捷方式[Ctrl+O]将我们需 ...

  2. 免费加水印小程序怎么制作

    免费加水印小程序怎么制作 全屏水印 全文覆盖,完全保护 隐形水印 肉眼不可见,隐形保护 超级横幅 更多用于宣传 专属水印 头像+昵称就制作水印 完整资源获取 项目获取:typora: typora/i ...

  3. 【转】C#使用GDI+制作背景颜色淡入淡出效果的按钮

    C#使用GDI+制作背景颜色淡入淡出效果的按钮 2010-04-14  来自:CNBLOG  字体大小:[大 中 小] 摘要:本文介绍C#使用GDI+制作背景颜色淡入淡出效果的按钮,并提供完整的示例和 ...

  4. 碉堡的小程序:用 Python 制作演示迷宫算法的 gif 动画

    微信改版,加星标不迷路! 碉堡的小程序:用 Python 制作演示迷宫算法的 gif 动画 作者:neozhaoliang 本文要介绍的是我写的一个有趣的小程序,一个脱离了低级趣味的程序,一个有益于广 ...

  5. matlab水印剪切攻击程序,可以运行的水印matlab程序(嵌入,提取,攻击测试等).doc

    可以运行的水印matlab程序(嵌入,提取,攻击测试等).doc IMREAD YUANSHITUXIANGBMP SUBPLOT2,2,1IMSHOWTITLE 原始图像 WATERIMREAD W ...

  6. jetson nano 系统镜像制作_参考备份Jetson Nano系统(该程序不完备,制作的image不可用,仅供)...

    参考备份Jetson Nano系统(该程序不完备,制作的image不可用,仅供) #!/usr/bin/python3 # -*- coding: utf-8 -*- ""&quo ...

  7. 微信小程序--优购页面制作

    优购–项目 这个项目学习源自:黑马程序员微信小程序开发前端教程_零基础玩转微信小程序-哔哩哔哩 想要更深入的了解此项目,就去黑马程序员学习该项目.该项目个人觉得对于初学者来说是有很大的帮助的.做好该项 ...

  8. 教你在CorelDRAW中制作水印

    水印是一种数字保护的手段,在图像上添加水印即能证明本人的版权,还能对版权的保护做出贡献.也就是在图片上打上半透明的标记,因其具有透明和阴影的特性,使之不管在较为阴暗或明亮的图片上都能完美使用,嵌入的水 ...

  9. 在小程序中实现海报制作

       wx.canvasToTempFilePath(object, component) 通过这个方法把画布的指定区域的内容导出生成指定大小的图片,并返回一个文件路径. 这里容易出现的问题就是生成的 ...

最新文章

  1. python pycurl
  2. 如何向 Microsoft 管理控制台添加证书管理器
  3. Post请求如何取消异步
  4. C++学习之路 | PTA乙级—— 1029 旧键盘 (20 分)(精简)
  5. kettle定时调度
  6. python gif转jpg_PIL-将GIF帧转换为JPG
  7. 【多线程】如何保证线程安全
  8. springMVC+mybatis
  9. 惠普服务器关机自动重启,HP笔记本关机自动重启的解决办法
  10. URL.createObjectURL()方法
  11. oracle无法进入nomount状态,数据库进入nomount状态
  12. c# 容联云_迅雷云加速开放平台c#demo
  13. win10清理_小学生都会:win10设置自动清理缓存和垃圾文件
  14. 游戏开发中常用的算法1(20道题一篇文章)
  15. Hello World, Hello, 2021
  16. 五个温度带的分界线_初中地理知识点:我国的温度带
  17. 10款常用的原型设计工具,包含一键生成原型工具
  18. mysql取数据库时间函数_MySQL数据库—日期与时间函数
  19. 分享一副现实版抽象画
  20. 计算机培训spss,[计算机软件及应用]SPSS 统计软件培训.ppt

热门文章

  1. OpenSSL的SSL/BIO_get_fd
  2. 收藏:asp.net
  3. win2003 + sqlserver2K sp4,客户端无法连接
  4. java分析日志文件_java程序如何对监控软件的日志文件进行如下分析?
  5. png文件头_文件上传总结
  6. 【MM模块】Subcontracting 委外加工(外包)—2
  7. [性能] SAP销售订单取数逻辑优化---索引表
  8. 放弃中国国籍 却赚着中国人的钱
  9. ABAP动态编程之功能实现
  10. 菲教驰骋在线外教市场,51Talk、阿卡索谁能攫取行业红利?