RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
VB.net图片打水印 图片打水印软件

C#如何给PDF文件添加水印

PDF水印分为两种:文本水印和图片水印。文本水印一般被用在商业领域,提醒读者该文档是受版权保护的,其他人不能抄袭或者免费使用。除了这个特征,水印还可以用来标记这个文档的一些基本状态信息,例如是草稿状态还是最终版本?图片水印是美化PDF文件的一个很好的选择,它可以用多彩的、独特的图片来作为PDF文件的背景。那么,怎样用编程的方式给PDF文件添加水印呢?有很多种实现方法,其中一种最快最容易的办法也许是用第三方软件,例如Spire.PDF。本文会阐述怎样用免费的第三方软件Spire.PDF来给PDF文件添加文本水印和图片水印。

洪江网站建设公司创新互联,洪江网站设计制作,有大型网站制作公司丰富经验。已为洪江近千家提供企业网站建设服务。企业网站搭建\外贸网站建设要多少钱,请找那个售后服务好的洪江做网站的公司定做!

免费版Spire.PDF软件介绍

免费版Spire.PDF软件是一款免费的独立的PDF控件,它提供给编程者一系列丰富的PDF功能,例如读,写,新建,编辑,操作和通过C#或VB.NET转化PDF文件等。请注意,免费版仅支持10页的PDF文件和三页的转换功能。

如何得到?

首先,请从E-iceblue website网站上下载并安装Spire.PDF。安装完成后,你就可以利用“SampleCenter”和界面帮助快速开始了,其中有很多代码片段和详细的应用程序功能介绍。

下面就列举一些怎样给PDF文件添加图片水印和文本水印的代码片段。我把它分为两部分。一部分是图片水印,另一部分是文本水印。

第一部分:添加图片水印

首先,准备一张你想设置为PDF文件水印的图片。其次,我们只需要调用Image.FromFile(stringfilename)方法来加载图片,非常简单、方便。然后,设置PDF图片背景。

代码如下:

步骤1:创建一个新的PDF实例。然后导入PDF文件

PdfDocument pdf = new PdfDocument();  

pdf.LoadFromFile("sample.pdf");

步骤2:获取PDF文件的第一页

PdfPageBase page = pdf.Pages[0];

步骤3:导入图片并把它设置为PDF文件的背景

Image img = Image.FromFile("img.jpg");  

page.BackgroundImage = img;

步骤4:保存文件为PDF格式,命名为"ImageWaterMark.pdf"

pdf.SaveToFile("ImageWaterMark.pdf");

添加了图片水印的效果图如下:

图片 1: 图片水印

第二部分:添加文本水印

和添加图片水印不同的是,添加文本水印更为复杂。为了最好的匹配PDF页面,我们需要在PDF中制作出水印文本,然后设置文本的字体,颜色,位置和文本格式。以上两种功能均可以通过调用这种方法来快速实现:DrawString(strings, PdfFontBase font, PdfBrush brush, float x, float y, PdfStringFormat format).下面是代码片段:

步骤1:创建一个新的PDF实例。然后导入PDF文件。

PdfDocument pdf= new PdfDocument();

pdf.LoadFromFile("sample.pdf");

步骤2:获取PDF文件的第一页

PdfPageBase page = pdf.Pages[0];

步骤3:添加文本水印到文件的第一页,设置文本格式

PdfTilingBrush brush = new PdfTilingBrush(new SizeF(page.Canvas.ClientSize.Width / 2, page.Canvas.ClientSize.Height / 3));  

brush.Graphics.SetTransparency(0.3f);  

brush.Graphics.Save();  

brush.Graphics.TranslateTransform(brush.Size.Width / 2, brush.Size.Height / 2);  

brush.Graphics.RotateTransform(-45);  

brush.Graphics.DrawString("Draft Version", new PdfFont(PdfFontFamily.Helvetica, 24), PdfBrushes.Blue,0, 0, new PdfStringFormat(PdfTextAlignment.Center));  

brush.Graphics.Restore();  

brush.Graphics.SetTransparency(1);  

page.Canvas.DrawRectangle(brush, new RectangleF(new PointF(0, 0), page.Canvas.ClientSize));

步骤4:保存文件为PDF格式,命名为"TextWaterMark.pdf"

pdf.SaveToFile("TextWaterMark.pdf");

添加了文本水印的效果图如下:

图片 2: 文本水印

总结

虽然有很多文章介绍了不用第三方软件就可以用编程的方式来添加水印的方法,但这里我仍然使用了免费版的Spire.PDF软件,因为除了水印功能以外,我还需要使用新建,转换,打印和保护PDF等功能,而这个软件全部支持这些功能。它工作的很好,并且大大的提高了我的工作效率。如果你也感兴趣的话,不妨试试它。

VB 给图片添加文字水印

VB6.0给已有图片添加文字可通过定位的Print 方法实现。要将添加文字的位图储存为JPG格式文件,需要使用API函数等实现。

具体步骤:

1)在图片框加载需要添加文字水印的图片。

2)使用如下代码实现添加文字到图片框。

Private Sub CmdEdit_Click() '修改

Dim strTxt As String

strTxt = "风雨无阻 拍摄"

Picture1.FontSize = 18

Picture1.CurrentY = Picture1.ScaleHeight - 30

Picture1.CurrentX = Picture1.ScaleWidth / 2 - Picture1.TextWidth(strTxt) / 2

Picture1.ForeColor = vbWhite

Picture1.FontItalic = True

Picture1.Print strTxt

End Sub

3)将以下API转换图片格式代码放置于标准模块,模块命名为saveApg。

Option Explicit

Public Type GUID

Data1 As Long

Data2 As Integer

Data3 As Integer

Data4(0 To 7) As Byte

End Type

Public Type GdiplusStartupInput

GdiplusVersion As Long

DebugEventCallback As Long

SuppressBackgroundThread As Long

SuppressExternalCodecs As Long

End Type

Public Type EncoderParameter

GUID As GUID

NumberOfValues As Long

type As Long

Value As Long

End Type

Public Type EncoderParameters

Count As Long

Parameter As EncoderParameter

End Type

Public Declare Function GdiplusStartup Lib "GDIPlus" (token As Long, inputbuf As GdiplusStartupInput, ByVal outputbuf As Long) As Long

Public Declare Function GdiplusShutdown Lib "GDIPlus" (ByVal token As Long) As Long

Public Declare Function GdipCreateBitmapFromHBITMAP Lib "GDIPlus" (ByVal hbm As Long, ByVal hpal As Long, Bitmap As Long) As Long

Public Declare Function GdipDisposeImage Lib "GDIPlus" (ByVal Image As Long) As Long

Public Declare Function GdipSaveImageToFile Lib "GDIPlus" (ByVal Image As Long, ByVal fileName As Long, clsidEncoder As GUID, encoderParams As Any) As Long

Public Declare Function CLSIDFromString Lib "ole32" (ByVal str As Long, id As GUID) As Long

Public Declare Function GdipCreateBitmapFromFile Lib "GDIPlus" (ByVal fileName As Long, Bitmap As Long) As Long

Public Function PictureBoxSaveJPG(ByVal pict As StdPicture, ByVal fileName As String, Optional ByVal quality As Byte = 80) As Boolean

Dim tSI As GdiplusStartupInput

Dim lRes As Long

Dim lGDIP As Long

Dim lBitmap As Long

'初始化 GDI+

tSI.GdiplusVersion = 1

lRes = GdiplusStartup(lGDIP, tSI, 0)

If lRes = 0 Then

'从句柄创建 GDI+ 图像

lRes = GdipCreateBitmapFromHBITMAP(pict.Handle, 0, lBitmap)

If lRes = 0 Then

Dim tJpgEncoder As GUID

Dim tParams As EncoderParameters

'初始化解码器的GUID标识

CLSIDFromString StrPtr("{557CF401-1A04-11D3-9A73-0000F81EF32E}"), tJpgEncoder

'设置解码器参数

tParams.Count = 1

With tParams.Parameter ' Quality

'得到Quality参数的GUID标识

CLSIDFromString StrPtr("{1D5BE4B5-FA4A-452D-9CDD-5DB35105E7EB}"), .GUID

.NumberOfValues = 1

.type = 4

.Value = VarPtr(quality)

End With

'保存图像

lRes = GdipSaveImageToFile(lBitmap, StrPtr(fileName), tJpgEncoder, tParams)

'销毁GDI+图像

GdipDisposeImage lBitmap

End If

'销毁 GDI+

GdiplusShutdown lGDIP

End If

If lRes Then

PictureBoxSaveJPG = False

Else

PictureBoxSaveJPG = True

End If

End Function

4)使用以下代码实现将加好文字水印图片保存为jpg格式图片。

Private Sub Command3_Click() '保存为.jpg图片

' 设置“CancelError”为 True

CommonDialog1.CancelError = True

On Error GoTo ErrHandler

' 设置标志

CommonDialog1.Flags = cdlOFNHideReadOnly

' 设置过滤器

CommonDialog1.Filter = "JPEG Files"  "(*.jpg)|*.jpg"

' 指定缺省的过滤器

CommonDialog1.FilterIndex = 2

' 显示“打开”对话框

CommonDialog1.ShowSave

' 显示选定文件的名字

'MsgBox CommonDialog1.fileName

Set Picture2.Picture = Picture1.Image '转移Picture1所绘图为Picture2.Picture赋值

Dim ret As Boolean

ret = PictureBoxSaveJPG(Picture2, CommonDialog1.fileName) '保存压缩后的图片

If ret = False Then

MsgBox "保存失败"

End If

Exit Sub

ErrHandler:

' 用户按了“取消”按钮

Exit Sub

End Sub

怎么给照片打水印。

先用ps软件制作水印,保存为png格式图片或有直接定义为画笔预设,在用到水印时打开png图片把进照片,ctrl+t调整大小;或者直接用画笔工具,水印笔刷在照片需要加水印的地方点画即可!

请问如果用ASP组件自动生成图片水印?

一般做法都是用aspjpeg的组件,这里有份用法说明,看一下吧。

aspjpeg是一款非常强大的图片处理组件,纯英文版本。不过早已经有免费版和破解版,但是对其进行详细与深入介绍的文章却是不多,即使有也只牵涉到图片缩略和图片水印。可能是因为纯英文的缘故。

这里我就是针对这些问题谈谈aspjpeg的高级用法。这里的技术主要包括:

图片缩略

图片水印

安全码技术

图片切割

图片合并

数据库支持

更多不常用的方法介绍

以及相关的一些实用技术

aspjpeg唯一点不足的就是输出方式比较单一。在这里,我们主要谈将图片处理保存后再调用的这种输出方法。另外,本人比较懒,所以有些代码仍然引用于原文档,不懂的地方偶会加以解释!

学过vb或者.net的同志肯定一看就明白了。刷子来着。呵呵。

一、图片缩略

%

Set Jpeg = Server.CreateObject("Persits.Jpeg") 调用组件

Path = Server.MapPath("images") "\clock.jpg" 待处理图片路径

Jpeg.Open Path 打开图片

高与宽为原图片的1/2

Jpeg.Width = Jpeg.OriginalWidth / 2

Jpeg.Height = Jpeg.OriginalHeight / 2

保存图片

Jpeg.Save Server.MapPath("images") "\clock_small.jpg"

%

IMG SRC="images/clock_small.jpg" 查看处理的图片

二、图片水印

%

Set Jpeg = Server.CreateObject("Persits.Jpeg")

Jpeg.Open Server.MapPath("images/dodge_viper.jpg")

开始写文字

Jpeg.Canvas.Font.Color = 000000' red 颜色

Jpeg.Canvas.Font.Family = "Courier New" 字体

Jpeg.Canvas.Font.Bold = True 是否加粗

Jpeg.Canvas.Print 10, 10, "Copyright (c) XYZ, Inc."

打印坐标x 打印坐标y 需要打印的字符

以下是对图片进行边框处理

Jpeg.Canvas.Pen.Color = H000000' black 颜色

Jpeg.Canvas.Pen.Width = 2 画笔宽度

Jpeg.Canvas.Brush.Solid = False 是否加粗处理

Jpeg.Canvas.Bar 1, 1, Jpeg.Width, Jpeg.Height

起始X坐标 起始Y坐标 输入长度 输入高度

Jpeg.Save Server.MapPath("images/dodge_viper_framed.jpg") 保存

%

三、安全码

安全玛的道理和加水印差不多,很多朋友问我要具体的代码技术,在这里我就写出来和大家分享,一般人我还不告诉他。呵呵。

%

生成安全码的函数

function make_randomize(max_len,w_n) max_len 生成长度,w_n:0 可能包含字母,1:只为数字

randomize

for intcounter=1 to max_len

whatnext=int((1-0+1)*rnd+w_n)

if whatnext=0 then

upper=122

lower=97

else

upper=57

lower=48

end if

strnewpass=strnewpass chr(int((upper-lower+1)*rnd)+lower)

next

make_randomize=strnewpass

end function

%

生成安全码的图片。当然你要预先准备一张背景图哦

%random_num=make_randomize(4,1) 生成4位数字的安全码

session("random_num")=random_num 为什么调用session,没有session的安全码是完全没有意义的。呵呵

Set Jpeg = Server.CreateObject("Persits.Jpeg") 调用组件

Jpeg.Open Server.MapPath("infos/random_pic/random_index.gif") 打开准备的图片

Jpeg.Canvas.Font.Color = H006699

Jpeg.Canvas.Font.Family = "Arial Black"

Jpeg.Canvas.Font.Bold = false

Jpeg.Canvas.PrintText 0, -2, random_num

jpeg.save Server.MapPath("infos/random_pic/random_index.bmp") 保存

% img src="infos/random_pic/random_index.bmp" border="0" align="absmiddle"

自己做做看。呵呵。

四、图片切割

一直以来,对aspjpeg不了解的人以为是无法用它来进行切割的。

其实有这样的一个方法的

crop x1,y1,x2,y2

切割长方型左上角x坐标,y坐标 右下角x坐标 y坐标

下面我就做一个演示哈

Set Jpeg = Server.CreateObject("Persits.Jpeg")

jpeg.open server.MapPath("/pic/1.gif")

jpeg.width=70

Jpeg.Height = Jpeg.OriginalHeight*70 / jpeg.Originawidth

jpeg.crop 0,0,70,52 开始切割其实是把超过52象素的下部分去掉

jpeg.save server.MapPath("/temp_pic/small_1.gif") 保存

怎么样,很简单吧

五、图片合并

我们这里是要把logo图片加到dodge_viper.jpg图片上去

其实,图片合并的方法也可以用来动态打水印哦

Set Photo = Server.CreateObject("Persits.Jpeg")

PhotoPath = Server.MapPath("images") "\dodge_viper.jpg"

Photo.Open PhotoPath

Set Logo = Server.CreateObject("Persits.Jpeg")

LogoPath = Server.MapPath("images") "\clock.jpg"

Logo.Open LogoPath

Logo.Width = 70

Logo.Height = Logo.Width * Logo.OriginalHeight / Logo.OriginalWidth

Photo.DrawImage 0, 0, Logo

Photo.SendBinary 这里用了sendBinary的输出方法。当然,你也可以先保存更改后的dodge_viper.jpg,再输入也可以。我个人不大喜欢用sendBinary方法,在网速慢的时候容易出错。在速度方面也不怎样。呵呵。

六、数据库支持

这里不多说了。其实就是Binary方法,大家知道图片存进数据库只能存为二进制的文件的。所以代码就懒的写了。

七、更多方法介绍

Canvas.Line(Left, Top, Right, Bottom)

画一条直线

Canvas.Ellipse(Left, Top, Right, Bottom)

画出一个椭圆

Canvas.Circle(X, Y, Radius)

画出一个圆

Canvas.Bar(Left, Top, Right, Bottom)

画出一个长方形,上面有代码介绍了

Canvas.Font.ShadowColor

文字阴影颜色

Canvas.Font.ShadowXOffset As Long

阴影X坐标设定

Canvas.Font.ShadowYOffset As Long

Y坐标设定

Canvas.Font.BkMode As String

文字背景

本文作者:雨浪

本处为转载,版权归原作者所有

请问如何在vb6.0中给form窗口添加图片,并把图片设为水印

要是加图的话图片框和图像框都可以,但最好用图片框,图片框里可以写文字……水印效果最好做好再放进去,要不编缉麻烦……

如何给图片打上水印?

我们以最常用的文本水印为例,说明在一个产品的图片上如何加上自己公司的名字。

1,点击工具栏里面的“T”图标。在图片的位置上跳出一个“输入文字”的对话框。

2,在右边的水印编辑器里面输入想要的文字。其文字的属性,包括文字的字体,颜色,角度,大小,凸文还是凹文,透明度等等。

3,确定文字在图片中的位置,然后用水平间距和垂直位置微调一下。

添加文字水印的工作就完成了!


网页标题:VB.net图片打水印 图片打水印软件
文章起源:http://cqwzjz.cn/article/hiecgh.html