2016-03-29 3 views
0

Je travaille sur l'eau marquant une image avec une autre image et je ne peux pas sembler l'avoir tout à fait raison. J'utilise la bibliothèque graphique pour superposer l'image du filigrane sur la photo. L'objet Photo Stream est ensuite téléchargé en tant qu'image jpg sur Amazon S3. Quand je regarde l'image, la photo est là mais aucune marque d'eau n'est présente.ASP.net Image Filigrane ne fonctionne pas

J'ai essayé d'utiliser la fonction DrawImage() et DrawText() pour ajouter du texte en tant que test mais pas de chance. Y a-t-il des problèmes avec cette partie du code? Merci pour l'aide.

public Stream WatermarkImage(Stream img, Stream mark, ImageType type) 
    { 
     // watermark the image 
     using (Image result = Image.FromStream(img)) 
     { 
      Image markImage = Image.FromStream(mark); 

      using (Graphics g = Graphics.FromImage(result)) 
      { 
       // draw mark and get result 
       g.DrawImage(markImage, new Point(20, 20)); 

       Stream markedResult = new MemoryStream(); 

       result.Save(markedResult, ImageFormat.Jpeg); 
       // return image 
       return markedResult; 

      } 
     } 
    } 

EDIT: fait, je trouve que cette partie du code fonctionne. Au lieu de sauver S3, je l'ai enregistré dans un fichier:

result.Save(@"C:\Users\Dan\Documents\Jobs\ZenPhotos\Test\test_watermark" + DateTime.Now.ToString("MM_dd_yyyy_HH_mm") + ".jpg"); 

Le fichier enregistré montre l'image filigrané. Donc, le problème est dans mon téléchargement sur S3 et n'est pas lié.

+0

Je dis cela sans essayer moi-même. Mais je pense que vous pourriez avoir plus de chance d'utiliser un objet Bitmap plutôt qu'un objet Image. J'ai eu du succès avec la manipulation d'image en utilisant Bitmap. – Theo

Répondre

0

Jetez un oeil à Automatically add watermark to an image

au lieu de l'enregistrer sur le disque que l'exemple montre, vous pouvez retourner un flux plutôt que si c'est ce que vous recherchez.

Espérons que ça aide.

0
+0

J'ai envisagé cette route pour d'autres projets mais je pense que cela nécessite un abonnement payant. J'essaie d'emprunter la voie libre puisque ASP.net a en fait une manipulation d'image puissante. –

+0

Un abonnement gratuit vous permettra d'utiliser ces transformations. Vous devrez uniquement effectuer une mise à niveau en fonction de votre utilisation (par exemple, stockage, nombre d'images traitées/mois, etc.) –