2010-11-14 4 views
6

Ok, j'ai cherché sur Internet et stackoverflow mais je n'arrive pas à trouver une réponse à mon problème.Nom d'utilisateur comme Watermark

J'ai besoin de filigrane dynamique des images téléchargées par les utilisateurs, mais je ne veux pas que du texte appliqué sur une image. J'ai besoin d'un vrai filigrane comme ceci: alt text

La seule façon d'obtenir cet effet est d'utiliser Photoshop, d'ajouter de l'ombre et de réduire le remplissage à 0%. Mais si mon site est visité par 200 utilisateurs qui téléchargent leurs images, je ne peux tout simplement pas faire pour chacun d'entre eux un nouveau fichier PNG avec leur nom d'utilisateur. C'est pourquoi je suis à la recherche d'une solution dynamique pour ce problème.

J'ai déjà trouvé des classes comment ajouter un fichier png comme un filigrane pour les images, mais comme je l'ai dit avant cela ne fonctionnera pas si mon site est visité par un grand nombre d'utilisateurs.

J'espère que quelqu'un sait comment résoudre ce problème et obtenir le même effet dynamique sur les images.

Merci beaucoup.

Répondre

11

La documentation de la bibliothèque de traitement d'image ImageMagick includes such a transparent watermark example. Même si vous souhaitez utiliser GD au lieu de ImageMagick, cela peut vous donner une idée de la façon de le faire.

+0

Merci pour la réponse. Comme je l'ai déjà mentionné, je sais déjà comment ajouter dynamiquement des filigranes à une image. Je veux aller plus loin et créer dynamiquement un PNG avec les effets de transparence et d'ombre comme vous le voyez ci-dessus pour chaque utilisateur enregistré. – moonwalker

+0

Désolé, je n'ai pas vu ce que vous vouliez dire la première fois. Merci beaucoup, je vais essayer! – moonwalker

2

Vous pouvez utiliser imageMagick pour cela avec PHP. Faire un peu de googling pour PHP tatouage imagemagick, ce fil peut aider certains: http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=17067

Vous voulez essentiellement faire un fichier PNG de votre filigrane. Le PNG permet la transparence alpha et vous pouvez obtenir votre effet d'ombre portée, etc.

Ceci sera ensuite appliqué à votre image JPG, et une image JPG finale filigranée sera faite avec votre PNG ajouté par-dessus.

Devrait fonctionner.

+0

Merci pour votre réponse.Comme je l'ai mentionné auparavant, je sais déjà comment cela. J'ai maintenant besoin de créer dynamiquement le fichier PNG "filigrane" pour chaque utilisateur avec PHP. :) – moonwalker

0

Les autres réponses ici sont de bonnes réponses, mais je voulais jeter une alternative.

Vous pouvez construire dynamiquement scripts pour exécuter the GIMP, ce qui vous donne beaucoup de flexibilité. C'est beaucoup trop pour un filigrane simple, mais si vous avez besoin de faire un traitement d'image plus complexe, c'est définitivement une option. CoolText.com est un exemple d'un site Web qui fait cela.

La même approche devrait également fonctionner dans Photoshop. En fait, vous pourriez probablement instancier les COM interface with PHP de Photoshop.

Encore une fois, je ne recommande pas cela pour le tatouage de base ... juste si vous avez besoin de plus de fonctions que ce qui est fourni avec ImageMagick/GD.

+0

Merci pour les alternatives. Je vais les regarder. – moonwalker

0

Pour les autres réponses, j'ajouterai que vous ne devriez pas générer l'image à la volée. Si le filigrane est par nom d'utilisateur, générez le fichier de filigrane une fois lorsque l'utilisateur s'enregistre pour votre site (ou change son nom d'utilisateur), puis utilisez ce fichier comme une superposition pour les images téléchargées. Cela permettra d'économiser beaucoup de temps CPU.

+0

Voilà toute l'idée. Je ne sais pas comment générer un fichier PNG avec transparence et effet d'ombre. L'image est créée une fois lorsque l'utilisateur est enregistré (il ne peut pas changer son nom d'utilisateur) – moonwalker