VS.net图片加水印的代码
前文:实在是好久没有更新这个博客了。主要是本人现在不走技术路线,过了那个研究技术的年代了。现在做一些零散的很多事情。
今天突然收到猎头的邮件,看着心里激动啊。呵呵。当然,目前的状况也就看看,毕竟人生的目标和要求已经变了。此一时彼一时
但还是TMD激动啊。。。
翻了翻自己的文件夹,最近实在是没有什么原创的东西,把这个很久以前做的图片加水印的程序share出来,我做了些小封装。不算完全原创。
Imports Microsoft.VisualBasic
Imports System
Imports System.Drawing
Imports System.Drawing.Drawing2D
Imports System.Drawing.Imaging
Imports System.IO
'code ex:
'Dim wm As New ImageDrawing.ImageModify
' thefile.PostedFile.SaveAs(System.Web.HttpContext.Current.Server.MapPath("1.jpg")) //thisfile is a file upload html control
'Dim imgoutput As Image = System.Drawing.Bitmap.FromFile(System.Web.HttpContext.Current.Server.MapPath("1.jpg"))
' With wm
' .WaterMarkImagePath = System.Web.HttpContext.Current.Server.MapPath("a.gif")
' .LucencyPercent = 10
' .ModifyImagePath = System.Web.HttpContext.Current.Server.MapPath("1.jpg")
' .WaterImagePosition = ImageDrawing.ImageModify.WaterImagePositionType.RightBottom
' .OutPath = System.Web.HttpContext.Current.Server.MapPath("2.jpg")
' .DrawImage()
' End With
Namespace ImageDrawing
'/// <summary>
'/// 图片修改类,主要是用来保护图片版权的
'/// </summary>
Public Class ImageModify
#Region "member fields"
Private mModifyImagePath As String = ""
Private mWaterMarkImagePath As String = ""
Private mWaterImagePosition As WaterImagePositionType
Private mRightSpace As Int32
Private mBottoamSpace As Int32
Private mLucencyPercent As Int32 = 50
Private mOutPath As String = ""
#End Region
'///设置水印在原图像中的位置
Public Enum WaterImagePositionType
LeftTop
RightTop
Center
LeftBottom
RightBottom
Value
End Enum
#Region "propertys"
'/// <summary>
'/// 获取或设置要修改的图像路径
'/// </summary>
Public Property ModifyImagePath() As String
Get
Return mModifyImagePath
End Get
Set(ByVal Value As String)
mModifyImagePath = Value
End Set
End Property
'/// <summary>
'/// 获取或设置在画的图片路径(水印图片)
'/// </summary>
Public Property WaterMarkImagePath() As String
Get
Return mWaterMarkImagePath
End Get
Set(ByVal Value As String)
mWaterMarkImagePath = Value
End Set
End Property
'///设置水印在原图像中的位置
Public Property WaterImagePosition() As WaterImagePositionType
Get
Return mWaterImagePosition
End Get
Set(ByVal Value As WaterImagePositionType)
mWaterImagePosition = Value
End Set
End Property
'/// <summary>
'/// 获取或设置水印在修改图片中的右边距
'/// </summary>
Public Property RightSpace() As Int32
Get
Return mRightSpace
End Get
Set(ByVal Value As Int32)
mRightSpace = Value
End Set
End Property
'//获取或设置水印在修改图片中距底部的高度
Public Property BottoamSpace() As Int32
Get
Return mBottoamSpace
End Get
Set(ByVal Value As Int32)
mBottoamSpace = Value
End Set
End Property
'/// <summary>
'/// 获取或设置要绘制水印的透明度,注意是原来图片透明度的百分比
'/// </summary>
Public Property LucencyPercent() As Int32
Get
Return mLucencyPercent
End Get
Set(ByVal Value As Int32)
If Value >= 0 And Value <= 100 Then
mLucencyPercent = Value
Else
mLucencyPercent = 50
End If
End Set
End Property
'/// <summary>
'/// 获取或设置要输出图像的路径
'/// </summary>
Public Property OutPath() As String
Get
Return mOutPath
End Get
Set(ByVal Value As String)
mOutPath = Value
End Set
End Property
#End Region
#Region "methods"
'/// <summary>
'/// 开始绘制水印/图片水印,可设置透明度等
'/// </summary>
Public Function DrawImage() As Boolean
Dim bolReturn As Boolean = True
Dim modifyImage As Image = Nothing
Dim drawedImage As Image = Nothing
Dim g As Graphics = Nothing
Try
'//建立图形对象
modifyImage = Image.FromFile(Me.ModifyImagePath)
drawedImage = Image.FromFile(Me.WaterMarkImagePath)
g = Graphics.FromImage(modifyImage)
'//获取要绘制图形坐标
Dim x As Int32
Dim y As Int32
Select Case Me.WaterImagePosition
Case WaterImagePositionType.Center
x = (modifyImage.Width - drawedImage.Width) / 2
y = (modifyImage.Height - drawedImage.Height) / 2
Case WaterImagePositionType.LeftBottom
x = 0
y = modifyImage.Height - drawedImage.Height
Case WaterImagePositionType.LeftTop
x = 0
y = 0
Case WaterImagePositionType.RightBottom
x = modifyImage.Width - drawedImage.Width
y = modifyImage.Height - drawedImage.Height
Case WaterImagePositionType.RightTop
x = modifyImage.Width - drawedImage.Width
y = 0
Case WaterImagePositionType.Value
x = modifyImage.Width - Me.RightSpace
y = modifyImage.Height - Me.BottoamSpace
Case Else
x = 0
y = 0
End Select
If x < 0 Then
x = 0
End If
If y < 0 Then
y = 0
End If
'//设置颜色矩阵
Dim colorMatrix As ColorMatrix = New ColorMatrix(New Single()() _
{New Single() {1, 0, 0, 0, 0}, _
New Single() {0, 1, 0, 0, 0}, _
New Single() {0, 0, 1, 0, 0}, _
New Single() {0, 0, 0, Convert.ToSingle(Me.LucencyPercent / 100.0F), 0}, _
New Single() {0, 0, 0, 0, 1}})
Dim imgAttr As ImageAttributes = New ImageAttributes
imgAttr.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap)
'//绘制阴影图像
g.DrawImage(drawedImage, New Rectangle(x, y, drawedImage.Width, drawedImage.Height), 0, 0, drawedImage.Width, drawedImage.Height, GraphicsUnit.Pixel, imgAttr)
'//保存文件
Dim allowImageType As String() = {".jpg", ".gif", ".png", ".bmp", ".tiff", ".wmf", ".ico"}
Dim file As FileInfo = New FileInfo(Me.ModifyImagePath)
Dim imageType As ImageFormat = ImageFormat.Gif
Select Case file.Extension.ToLower()
Case ".jpg"
imageType = ImageFormat.Jpeg
Case ".gif"
imageType = ImageFormat.Gif
Case ".png"
imageType = ImageFormat.Png
Case ".bmp"
imageType = ImageFormat.Bmp
Case ".tif"
imageType = ImageFormat.Tiff
Case ".wmf"
imageType = ImageFormat.Wmf
Case ".ico"
imageType = ImageFormat.Icon
Case Else
imageType = ImageFormat.Jpeg
End Select
Dim ms As MemoryStream = New MemoryStream()
modifyImage.Save(ms, imageType)
Dim imgData As Byte() = ms.ToArray()
Dim fs As FileStream = Nothing
If Not Me.OutPath.Equals(String.Empty) Then
fs = New FileStream(Me.OutPath, FileMode.Create, FileAccess.Write)
Else
fs = New FileStream(Me.ModifyImagePath, FileMode.Create, FileAccess.Write)
End If
If Not fs Is Nothing Then
fs.Write(imgData, 0, imgData.Length)
fs.Close()
End If
Catch ex As Exception
bolReturn = False
Finally
End Try
Return bolReturn
End Function
'修改图片大小
Public Function SizeChange(ByVal intWidth As Int32, ByVal intHeight As Int32) As Boolean
Dim bolReturn As Boolean = True
Try
Dim modifyImage As Image = Image.FromFile(Me.ModifyImagePath)
'//
Dim imageOut As Image = modifyImage.GetThumbnailImage(intWidth, intHeight, Nothing, System.IntPtr.Zero)
'//保存文件
Dim allowImageType As String() = {".jpg", ".gif", ".png", ".bmp", ".tiff", ".wmf", ".ico"}
Dim file As FileInfo = New FileInfo(Me.ModifyImagePath)
Dim imageType As ImageFormat
Select Case file.Extension.ToLower()
Case ".jpg"
imageType = ImageFormat.Jpeg
Case ".gif"
imageType = ImageFormat.Gif
Case ".png"
imageType = ImageFormat.Png
Case ".bmp"
imageType = ImageFormat.Bmp
Case ".tif"
imageType = ImageFormat.Tiff
Case ".wmf"
imageType = ImageFormat.Wmf
Case ".ico"
imageType = ImageFormat.Icon
Case Else
imageType = ImageFormat.Jpeg
End Select
imageOut.Save(OutPath, imageType)
Catch ex As Exception
bolReturn = False
Finally
End Try
Return bolReturn
End Function
#End Region
#Region "new"
Public Sub New()
ModifyImagePath = ""
WaterMarkImagePath = ""
RightSpace = 0
BottoamSpace = 0
LucencyPercent = 50
OutPath = ""
mWaterImagePosition = WaterImagePositionType.LeftTop
End Sub
#End Region
End Class
End Namespace
调用部分:
Imports System.IO
Imports System.Drawing
Partial Class PicTest2
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
'//thefile是个file field html 控件
thefile.PostedFile.SaveAs(System.Web.HttpContext.Current.Server.MapPath("BBS\SnkProductImages\1.jpg"))
Dim memstream As System.IO.MemoryStream = New System.IO.MemoryStream()
Dim imgoutput As System.Drawing.Image = System.Drawing.Bitmap.FromFile(System.Web.HttpContext.Current.Server.MapPath("BBS\SnkProductImages\1.jpg"))
'//修改成80×80大小
Dim imgoutput2 As System.Drawing.Image = imgoutput.GetThumbnailImage(80, 80, Nothing, System.IntPtr.Zero)
imgoutput2.Save(System.Web.HttpContext.Current.Server.MapPath("BBS\SnkProductImages\2.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg)
Response.Write(thefile.PostedFile.FileName)
Response.Write("len:" + memstream.length.tostring())
imgoutput.Dispose()
imgoutput2.Dispose()
Response.Write("上传成功!")
Response.Write(System.Web.HttpContext.Current.Server.MapPath("BBS\SnkProductImages\2.jpg"))
'//加文字水印,注意,这里的代码和以下加图片水印的代码不能共存
Dim g As Graphics = Graphics.FromImage(imgoutput)
g.DrawImage(imgoutput, 0, 0, imgoutput.Width, imgoutput.Height)
Dim f As Font = New Font("Verdana", 32)
Dim b As Brush = New SolidBrush(Color.Red)
Dim addText As String = "SNK Star"
g.DrawString(addText, f, b, 10, 10)
g.Dispose()
imgoutput.Save(System.Web.HttpContext.Current.Server.MapPath("BBS\SnkProductImages\3.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg)
End Sub
End Class
转载于:https://www.cnblogs.com/Carlwave/archive/2010/07/02/1770151.html
VS.net图片加水印的代码相关推荐
- 给图片加水印的代码java_Java为图片加水印的代码
下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. import java.awt.AlphaComposite; import java.a ...
- 小程序图片加水印实现代码,带效果图
效果图: 本文有核心代码和完整代码,完整代码是上传用户的个人信息到云数据库,包括表单,图片上传,多图上传到云数据库. 实现核心代码 <view class="mg_bo"&g ...
- php 上传加水印图片格式,用PHP实现给上传的图片加水印的代码_PHP
$uptypes=array('image/jpg','image/jpeg','image/pjpeg','image/gif');//上传图片文件类型列表 $wFile="a.jpg&q ...
- php给网页加水印_两种php给图片加水印的实现代码
PHP最简单的加水印方法 $img = imagecreatefromjpeg($filename); $logo = imagecreatefromjpeg($filename); /*imagec ...
- Java图片水印生成器代码 - 批量给自己的网站图片加水印
Java图片水印生成器代码 - 批量给自己的网站图片加水印 最近在做一款APP,App中的图片是自己一个个的画出来的,为了保证图片不被盗用和处理,所以就需要加上水印防盗.这跟CSDN一样. 注意事项: ...
- php加水印功能,PHP图片加水印功能
本篇文章主要介绍PHP图片加水印功能,感兴趣的朋友参考下,希望对大家有所帮助. 实例代码如下:<?php /** * 功能:给一张图片加上水印效果 * $i 要加水印效果的图片 * $t 水印文 ...
- Java图片处理(二)图片加水印
图片加水印,是通过图片重叠绘制实现的.实现代码如下: public static void press(String pressImg, String pressText, String target ...
- Python脚本实现图片加水印
起步 图片是指由图形.图像等构成的平面媒体,有形式的事物,我们看到的,是图画.照片.拓片等的统称. 为了保护一些原创图片的版权,某些时候我们需要在图片上面,加上水印,当然你可以用Photoshop来做 ...
- java 水印 位置_Java实现图片加水印且控制位置和透明度
Java实现图片加水印且控制位置和透明度 昨天要做一个给图片加水印的功能,不想使用一些插件,就在网上转了一会儿,经过改装成了我需要的功能,代码如下: package org.guhao; import ...
最新文章
- HTML事件的执行顺序
- web网站无法启动报错
- JAVA_OA(十四)番外:JAVAWEB防止表单重复提交的方法整合(包括集群部署)
- 系统协调服务器,协调网络系统 Collaboration network system
- Java实现二分查找法
- ASP.NET中登录后反复跳转回登录页面
- C语言练习——打印九九乘法表
- php嗅探链接,教你如何利用php来嗅探劫持服务器数据
- 测试开发大厂面试精选40题
- Java后台给PDF加水印并且合并多个PDF文件
- 正六面体染色(java)
- [车联网安全自学篇] ATTACK安全之交互式/非交互式Shell和登录式/非登录式Shell的检测
- html语言div怎么使用,什么是div标签?HTML中div标签怎么使用?
- 旋转编码器旋钮程序_让我们使用SwiftUI构建具有旋转手势的复古音频旋钮
- iOS中物理单位换算
- 家用双wan口路由器推荐_教你如何配置双WAN口路由器
- 大数据分析及挖掘技术
- ASO优化:如何提高App Store应用商店中排名?
- 万字详解数仓分层设计架构 ODS-DWD-DWS-ADS
- Vue-cli 微博注册登录系统
热门文章
- export、export default的使用
- 搞定Redis高级特性与性能调优
- Linux删除大文件后磁盘空间未释放问题
- Ubuntu 安装.bin文件
- 树脂基复合材料是什么?
- 集成融云直播UI的时候提示_matroska_decode_buffer in KSYMediaPlayer(matroskadec.o)
- 3-36串AFE芯片锂电池国产BMS模拟前端采集保护芯片
- 试想:有什么是5G手机能做,但今天的4G手机做不了的?
- Unity3D Shader官方教程翻译(三)
- Omi × 云开发『半天』搞定小程序 『markdown 内容发布系统』