zoukankan      html  css  js  c++  java
  • VS.net图片加水印的代码 Carlwave

    前文:实在是好久没有更新这个博客了。主要是本人现在不走技术路线,过了那个研究技术的年代了。现在做一些零散的很多事情。

    今天突然收到猎头的邮件,看着心里激动啊。呵呵。当然,目前的状况也就看看,毕竟人生的目标和要求已经变了。此一时彼一时

    但还是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

  • 相关阅读:
    PHP抓取网络数据的6种常见方法
    Linux scp 使用详解
    php.ini的配置
    VS2013中,将Qt的GUI程序改为控制台程序
    Matlab 摄像机标定+畸变校正
    Camera 3D概念
    旋转矩阵
    #pragma pack()用法详解
    【Boost】boost库获取格式化时间
    C/C++读写csv文件
  • 原文地址:https://www.cnblogs.com/Carlwave/p/1770151.html
Copyright © 2011-2022 走看看