图像保护器 - 使用 C# 编程的版权合并透明图像





4.00/5 (13投票s)
图像保护器 - 使用 C# 将图像与带有版权信息的透明图像合并

引言
如果您有一个需要上传大量图片的网站,比如相册之类的,您需要在上传之前保护您的图片。您可以使用 Fireworks 或 Photoshop 来完成,这很容易。但是,如果您有数百张照片或图片需要保护,Photoshop 或 Fireworks 就不是一个快速的选择。
这里演示了如何使用一个简单的 C# 程序来保护您的图片,只需点击一下即可保护所有图片!
目标
这个演示的目的只是为了让代码合并两个图像,并提供一个非常有用的例子(在上传之前保护大量照片),适用于网站管理员、设计师或开发者。
代码
我们需要加载两种类型的图像,一种是保护透明图像,另一种是要保护的图像。
要加载,请使用 openfiledialog
并将路径分配给一个 textbox
。
private void btnFileProtector_Click(object sender, System.EventArgs e)
{
if (openFileDialog1.ShowDialog()==DialogResult.OK)
{
txtFileProtector.Text=openFileDialog1.FileName;
}
}
要加载图像,请使用启用了多选属性的 openfiledialog
,并填充一个列表,使用一个 "for
" 函数从 0
到 openfile
对话框中选择的项目的数量,将每个路径作为一个项目。
这个数字在 "FileNames.Length
" 属性中。
private void btnFilesToProtect_Click(object sender, System.EventArgs e)
{
listFilesToProtect.Items.Clear();
if (openFileDialog2.ShowDialog()==DialogResult.OK)
{
if (openFileDialog2.FileNames.Length>0)
{
for(int i=0;i<openFileDialog2.FileNames.Length;i++)
{
listFilesToProtect.Items.Add(openFileDialog2.FileNames[i]);
}
}
}
}
现在我们需要在 using
部分使用一些程序集。添加
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;
然后,声明一个 System.Drawing.Graphics
,这是一个用于操作图像容器的对象。您可以使用 picturebox
来查看结果,或者使用 "Image
" 类将图像保存到磁盘。在本例中,使用 Image
。
声明 "Image
" 类的两个实例,每个实例将从文件中加载一个图像,第一个加载要保护的图像或背景,第二个加载透明图像或图像保护层。
您可以使用带有图例的透明 GIF 或 PNG。我推荐 PNG,因为 PNG 更详细,并且不会显示白色描边。
声明第 3 个 "Image
" 实例,将其用作两个合并图像的容器,并将其保存到硬盘上的文件中,并加载第五个图像,即背景。
这是为了获取原始图像的属性,并将修改后的文件保存为与原始文件相同的属性(大小、深度、分辨率等)。
System.Drawing.Graphics myGraphic = null;
Image imgB;
imgB = Image.FromFile(ImageBack);
Image imgF;
imgF = Image.FromFile(ImageFore);
Image m;
m = Image.FromFile(ImageBack);
当图像加载完毕,是时候合并时,使用 myGraphic
的 Graphics
实例在 "m
" Image
中绘制第一个或未缩放的背景图像,从零位置 (0x,0y
) 开始,然后立即在 "m
" Image
中绘制第二个图像。然后保存它。
要保护的原始图像 | 带有透明度的版权图像 |
![]() |
![]() |
myGraphic = System.Drawing.Graphics.FromImage(m);
myGraphic.DrawImageUnscaled(imgB,0,0);
myGraphic.DrawImageUnscaled(imgF,0,0);
myGraphic.Save();
最后
最后,您将获得一个由 Mygraphic
操作并包含两个图像的图像,一个在另一个之上。 您只需要保存到磁盘即可。
在这个演示中,该程序用一个 GIF 文件 (proteccion.gif) 保护一个婴儿图像文件 (kung-fubaby.jpg),并更改扩展名以防止在文件被使用时(当然是被这个程序使用时)写入文件。
m.Save(ImageBack.Replace(".jpg",".jpeg"),System.Drawing.Imaging.ImageFormat.Jpeg);
或
m.Save(ImageBack.Replace(".jpg","_copy.jpg"),System.Drawing.Imaging.ImageFormat.Jpeg);
图像结果看起来像这样

使用这个,您只需按一下按钮就可以保护不同目录中的大量图像。 享受吧!
历史
- 2005 年 7 月 25 日:首次发布