您的位置:首页 > 理论基础 > 计算机网络

水印+微图图(转http://tb.blog.csdn.net/TrackBack.aspx?PostId=721170)

2007-11-02 19:55 507 查看
Imports System.IO

Imports System.Drawing

Imports System.web

Imports System.Web.SessionState

Imports System.Web.UI

Imports System

Public Class uploadimg

' filePath是客户文件的完全路径,savepath是保存在服务器的文件夹名,imgname是文件更名后的名字,包括后缀名,size是图片缩微的实际大小

'这是缩微图形成

Public Sub uploadSmallImg(ByVal filePath As String, ByVal savepath As String, ByVal ImgName As String, ByVal size As Int16)

Dim Img As System.Drawing.Image = System.Drawing.Image.FromFile(filePath)

Dim ImgOutput As Bitmap

Dim neww, newh As Integer '考虑压缩失真问题,按比例保存

If Img.Height <= Size And Img.Width <= Size Then '直接保存

neww = Img.Height

newh = Img.Width

ElseIf Img.Width > Img.Height Then '按照width的比例保存

neww = Size

newh = Size * Img.Height / Img.Width

Else '按照高度比例保存

newh = Size

neww = Size * Img.Width / Img.Height

End If

ImgOutput = New Bitmap(Img, neww, newh) '形成缩微图

Img.Dispose()

'图片上传到服务器文件

Call savetofolder(ImgOutput, savepath + "s" + ImgName.ToLower)

End Sub

'保存原图,没有添加别的东西

' filePath是文件的完全路径,savepath是保存在服务器的文件夹名,imgname是文件更名后的名字,包括后缀名

Public Sub uploadbigimg(ByVal filepath As String, ByVal savepath As String, ByVal imgname As String)

Dim imgoutput As Bitmap = New Bitmap(filepath)

'图片上传到服务器文件

Call savetofolder(imgoutput, savepath + imgname.ToLower)

End Sub

' 由时间形成的新的文件名称,包括了后缀名称,精确到毫秒的文件名称

' 因为jpg的图片最小,都考虑用jpg的格式

Public Function newfilename() As String

'精确到毫秒的文件名称,包括了后缀了, 以防上传文件同名

Dim nowtime As DateTime = DateTime.Now

Dim changefilename As String = nowtime.ToString("yyyyMMddHHmmss") + nowtime.Millisecond.ToString + ".jpg" '+ ImageExtensionName

Return (changefilename.ToString)

End Function

'添加图片水印字符,然后上传

' filePath是客户文件的完全路径,savepath是保存在服务器的文件夹名,imgname是文件更名后的名字,包括后缀名,addstr是要填加的水印内容

Public Sub addwatermark(ByVal filepath As String, ByVal savepath As String, ByVal imgname As String) ', ByVal addstr As String)

'转换为位图

Dim bmp As Bitmap = New Bitmap(filepath)

Dim g As Graphics = Graphics.FromImage(bmp)

Dim fontsize As Int16

Dim addstr As String

'考虑图的大小,定义水印字体的大小

If bmp.Width < 120 Or bmp.Height < 120 Then

fontsize = 10

addstr = "--Cyt--" '图片太小添加--Cyt--

Else : fontsize = 20

addstr = "www.Caiyt.com" '图片比较大时添加www.Caiyt.com

End If

'定义画笔和字体

Dim f As Font = New Font("Arial Black", fontsize, FontStyle.Italic)

Dim b As Brush = New SolidBrush(Color.FromArgb(198, Color.Black)) '透明度100%

'添加水印,取中间值添加

g.DrawString(addstr, f, b, bmp.Width / 2, bmp.Height / 2)

'保存添加了水印的图片,选择保存格式

Call savetofolder(bmp, savepath + imgname.ToLower)

g.Dispose()

End Sub

'添加水印图片,上传

Public Sub addwatermarkimg(ByVal filepath As String, ByVal savepath As String, ByVal imgname As String, ByVal watermarkpath As String)

Dim bmp As Bitmap = New Bitmap(filepath)

Dim g As Graphics = Graphics.FromImage(bmp)

'考虑图的大小,定义水印字体的大小

If bmp.Width < 120 Or bmp.Height < 120 Then

Dim fontsize As Int16

Dim addstr As String

fontsize = 10

addstr = "--Cyt--" '图片太小添加--Cyt--,不添加图片

Dim f As Font = New Font("Arial Black", fontsize, FontStyle.Italic)

Dim b As Brush = New SolidBrush(Color.FromArgb(198, Color.Silver)) '透明度100%

'添加水印,取中间值添加

g.DrawString(addstr, f, b, bmp.Width / 2, bmp.Height / 2)

'图片比较大时添加图片

Else

Dim markimg As Bitmap = New Bitmap(watermarkpath)

'Rectangle(X,Y,width,height)

'放在图片的左上角

g.DrawImage(markimg, New Rectangle(10, 10, markimg.Width, markimg.Height), 0, 0, markimg.Width, markimg.Height, GraphicsUnit.Pixel)

End If

'定义画笔和字体

'保存添加了水印的图片,选择保存格式

Call savetofolder(bmp, savepath + imgname.ToLower)

g.Dispose()

End Sub

Public Sub savetofolder(ByVal bmp As Bitmap, ByVal path As String)

'按照给定的路径保存,统一按照jpg的格式保存

'必须要求有上载的文件的格式,要不然不知道服务器是什么

bmp.Save(path, System.Drawing.Imaging.ImageFormat.Jpeg)

bmp.Dispose()

End Sub

End Class
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐