65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIconemptyStarIcon

4.00/5 (13投票s)

2005 年 7 月 25 日

CPOL

3分钟阅读

viewsIcon

98487

downloadIcon

2394

图像保护器 - 使用 C# 将图像与带有版权信息的透明图像合并

Sample screenshot

引言

如果您有一个需要上传大量图片的网站,比如相册之类的,您需要在上传之前保护您的图片。您可以使用 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" 函数从 0openfile 对话框中选择的项目的数量,将每个路径作为一个项目。

这个数字在 "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);

当图像加载完毕,是时候合并时,使用 myGraphicGraphics 实例在 "m" Image 中绘制第一个或未缩放的背景图像,从零位置 (0x,0y) 开始,然后立即在 "m" Image 中绘制第二个图像。然后保存它。

要保护的原始图像 带有透明度的版权图像
Original image to protect Copyright Image with transparency
 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);

图像结果看起来像这样

Sample screenshot

使用这个,您只需按一下按钮就可以保护不同目录中的大量图像。 享受吧!

历史

  • 2005 年 7 月 25 日:首次发布
© . All rights reserved.