Quelqu'un sait? Vous voulez être en mesure de timbrer à la volée une image avec une autre image comme un filigrane, aussi pour faire de grands lots. Tout type de bibliothèque existante ou une technique que vous connaissez serait formidable.La meilleure façon d'estamper une image avec une autre image pour créer un filigrane dans ASP.NET?
Q
La meilleure façon d'estamper une image avec une autre image pour créer un filigrane dans ASP.NET?
6
A
Répondre
13
3
J'ai eu de la bonne chance avec ImageMagick. Il a aussi un API for .NET.
3
voici mon article complet: http://forums.asp.net/p/1323176/2634923.aspx
utiliser l'invite SDK commandes et accédez au dossier actif dans le dossier contenant le code source ci-dessous ... puis compiler le code en utilisant
vbc.exe watermark.vb /t:exe /out:watermark.exe
cette volonté créer un exe dans le dossier .. l'exe accepte deux paramètres: ex.
watermark.exe "c:\source folder" "c:\destination folder"
cela itérer le dossier parent et tous les sous-dossiers. tous les jpegs trouvés seront tatoués avec l'image que vous spécifiez dans le code et copiés dans le dossier de destination. L'image originale restera intacte.
// watermark.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
Questions connexes
- 1. Placer une image de filigrane sur d'autres images (C#, ASP.Net)
- 2. Comment puis-je ajouter une image sur une image en PHP comme un filigrane
- 3. Quelle est la meilleure façon d'afficher une image aléatoire dans ASP.NET?
- 4. Trouver une Image dans une Image
- 5. Quelle est la meilleure ou la meilleure façon de télécharger une image dans db dans asp.net mvc?
- 6. Accéder à une image dans une image
- 7. Créer une image Vignettes avant ou après le téléchargement de la meilleure façon?
- 8. Trouver une image dans une image C#
- 9. créer un span et injecter une image
- 10. créer UIImageView avec une partie du fichier image
- 11. Quelle est la meilleure façon d'afficher une image à partir d'une base de données de serveur sql dans asp.net?
- 12. ASP.NET C#: Recadrer une image
- 13. Quelle est la meilleure façon de scinder une image dans Silverlight?
- 14. Le moyen le plus efficace pour créer un CALayer avec une image dedans?
- 15. Créer une image cliquable dans un GridView dans Android
- 16. Comment créer une image CG avec des données RVB?
- 17. Meilleure façon de créer une page ASP.NET imprimable?
- 18. Quelle est la meilleure façon de "mettre en carré" une image dans .NET?
- 19. Pourquoi bitmapImageRepForCachingDisplayInRect: créer une image vide?
- 20. Glisser une image dans WPF
- 21. Créer une image PNG avec le service web C# HttpHandler
- 22. Meilleure façon de créer dynamiquement une page asp.net
- 23. Comment utiliser SDL pour créer une image en mode multiplier?
- 24. Comment créer une image mutable transparente dans JavaME?
- 25. ASP.Net télécharger une image pour un utilisateur avatar
- 26. transférer une image vers un iphone http
- 27. Comment puis-je créer une image "gigue"?
- 28. Java: créer une image de qualité médiocre
- 29. Comment créer une image dynamiquement sur AppEngine
- 30. Image Resizer pour ASP.NET
je vais vous recommandons d'utiliser GDI, plus aussi bien, bon travail. –
Bon article, montre l'ajout de texte et de filigranes à base d'images. – Liam