質問

誰でも知?していきたいと考えているクラスタンプの画像も画像電子透かし、まだ大きなバッチ.の既存の図書館や技術を知っていきます。

役に立ちましたか?

解決

これはお答え:

http://www.codeproject.com/KB/GDI-plus/watermark.aspx

幸運を祈っています。

他のヒント

いた新しい環境でも、頑張って下さ ImageMagick.その APIです。当期純 ます。

ここでは私の全記事: http://forums.asp.net/p/1323176/2634923.aspx

利用のSDKコマンドプロンプトとナビゲートのフォルダのフォルダを含む以下のソースコー---その後コンパイルのコードを使用


vbc.exe watermark.vb /t:exe /out:watermark.exe

このことをexe内のフォルダ..のexeを受け付けパラメータ:ex.


watermark.exe "c:\source folder" "c:\destination folder"

この繰り返し処理を実行し、親フォルダー すべての サブフォルダ.すべての見通報する透かしの画像に指定してコードにコピー先のフォルダにまとめた。オリジナルイメージのまま変更されません。

//ゾ.vb--


Imports System
Imports System.Drawing
Imports System.Drawing.Drawing2D
Imports System.Drawing.Imaging
Imports System.IO

Namespace WatermarkManager
    Class Watermark
        Shared sourceDirectory As String = "", destinationDirectory As String = ""

        Overloads Shared Sub Main(ByVal args() As String)

            'See if an argument was passed from the command line
            If args.Length = 2 Then
                sourceDirectory = args(0)
                destinationDirectory = args(1)

                ' make sure sourceFolder is legit
                If Directory.Exists(sourceDirectory) = False
                    TerminateExe("Invalid source folder. Folder does not exist.")
                    Exit Sub
                End If

                ' try and create destination folder
                Try
                    Directory.CreateDirectory(destinationDirectory)
                Catch
                    TerminateExe("Error creating destination folder. Invalid path cannot be created.")
                    Exit Sub
                End Try

                ' start the magic
                CreateHierarchy(sourceDirectory,destinationDirectory)

            ElseIf args.Length = 1
                If args(0) = "/?"
                    DisplayHelp()
                Else
                    TerminateExe("expected: watermark.exe [source path] [destination path]")
                End If
                Exit Sub
            Else
                TerminateExe("expected: watermark.exe [source path] [destination path]")
                Exit Sub
            End If

            TerminateExe()
        End Sub

        Shared Sub CreateHierarchy(ByVal sourceDirectory As String, ByVal destinationDirectory As String)

            Dim tmpSourceDirectory As String = sourceDirectory

            ' copy directory hierarchy to destination folder
            For Each Item As String In Directory.GetDirectories(sourceDirectory)
                Directory.CreateDirectory(destinationDirectory + Item.SubString(Item.LastIndexOf("\")))

                If hasSubDirectories(Item)
                    CreateSubDirectories(Item)
                End If
            Next

            ' reset destinationDirectory
            destinationDirectory = tmpSourceDirectory

            ' now that folder structure is set up, let's iterate through files
            For Each Item As String In Directory.GetDirectories(sourceDirectory)
                SearchDirectory(Item)
            Next
        End Sub

        Shared Function hasSubDirectories(ByVal path As String) As Boolean
            Dim subdirs() As String = Directory.GetDirectories(path)
            If subdirs.Length > 0
                Return True
            End If
            Return False
        End Function

        Shared Sub CheckFiles(ByVal path As String)
            For Each f As String In Directory.GetFiles(path)
                If f.SubString(f.Length-3).ToLower = "jpg"
                    WatermarkImage(f)
                End If
            Next
        End Sub

        Shared Sub WatermarkImage(ByVal f As String)

            Dim img As System.Drawing.Image = System.Drawing.Image.FromFile(f)
            Dim graphic As Graphics
            Dim indexedImage As New Bitmap(img)
            graphic = Graphics.FromImage(indexedImage)
            graphic.DrawImage(img, 0, 0, img.Width, img.Height)
            img = indexedImage

            graphic.SmoothingMode = SmoothingMode.AntiAlias
            graphic.InterpolationMode = InterpolationMode.HighQualityBicubic

            Dim x As Integer, y As Integer
            Dim source As New Bitmap("c:\watermark.png")
            Dim logo As New Bitmap(source, CInt(img.Width / 3), CInt(img.Width / 3))
            source.Dispose()
            x = img.Width - logo.Width
            y = img.Height - logo.Height
            graphic.DrawImage(logo, New Point(x,y))
            logo.Dispose()

            img.Save(destinationDirectory+f.SubString(f.LastIndexOf("\")), ImageFormat.Jpeg)
            indexedImage.Dispose()
            img.Dispose()
            graphic.Dispose()

            Console.WriteLine("successfully watermarked " + f.SubString(f.LastIndexOf("\")+1))
            Console.WriteLine("saved to: " + vbCrLf + destinationDirectory + vbCrLf)

        End Sub

        Shared Sub SearchDirectory(ByVal path As String)
            destinationDirectory = destinationDirectory + path.SubString(path.LastIndexOf("\"))
            CheckFiles(path)
            For Each Item As String In Directory.GetDirectories(path)
                destinationDirectory += Item.SubString(Item.LastIndexOf("\"))

                CheckFiles(Item)

                If hasSubDirectories(Item)
                    destinationDirectory = destinationDirectory.SubString(0,destinationDirectory.LastIndexOf("\"))
                    SearchDirectory(Item)
                    destinationDirectory += Item.SubString(Item.LastIndexOf("\"))
                End If
                destinationDirectory = destinationDirectory.SubString(0,destinationDirectory.LastIndexOf("\"))
            Next
            destinationDirectory = destinationDirectory.SubString(0,destinationDirectory.LastIndexOf("\"))
        End Sub

        Shared Sub CreateSubDirectories(ByVal path As String)
            destinationDirectory = destinationDirectory + path.SubString(path.LastIndexOf("\"))
            For Each Item As String In Directory.GetDirectories(path)
                destinationDirectory += Item.SubString(Item.LastIndexOf("\"))
                Directory.CreateDirectory(destinationDirectory)
                Console.WriteLine(vbCrlf + "created: " + vbCrlf + destinationDirectory)

                If hasSubDirectories(Item)
                    destinationDirectory = destinationDirectory.SubString(0,destinationDirectory.LastIndexOf("\"))
                    CreateSubDirectories(Item)
                    destinationDirectory += Item.SubString(Item.LastIndexOf("\"))
                End If
                destinationDirectory = destinationDirectory.SubString(0,destinationDirectory.LastIndexOf("\"))
            Next
            destinationDirectory = destinationDirectory.SubString(0,destinationDirectory.LastIndexOf("\"))
        End Sub

        Shared Sub TerminateExe(ByVal Optional msg As String = "")
            If msg  ""
                Console.WriteLine(vbCrLf + "AN ERROR HAS OCCURRED //" + vbCrLf + msg)
            End If
            Console.WriteLine(vbCrLf + "Press [enter] to close...")
            'Console.Read()
        End Sub

        Shared Sub DisplayHelp()
            Console.WriteLine("watermark.exe accepts two parameters:" + vbCrLf + " - [source folder]")
            Console.WriteLine(" - [destination folder]")
            Console.WriteLine("ex." + vbCrLf + "watermark.exe ""c:\web_projects\dclr source"" ""d:\new_dclr\copy1 dest""")
            Console.WriteLine(vbCrLf + "Press [enter] to close...")
            Console.Read()
        End Sub
    End Class
End Namespace
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top