0
votes

Comment ajouter du logo Watermark tout en téléchargeant une image en MVC

Comment ajouter de l'image de filigrane Tout en téléchargeant l'image dans ASP.NET MVC. J'utilise jQuery.uploadfile.min.js Multiple Fichier téléchargement pour l'image de téléchargement. Voulez-vous ajouter automatiquement l'image logo stockée (filigrane) pour ajouter dans mon fichier image que je vais télécharger.

en vue: p> xxx pré>

in gestionnaire: P> >

    public void UploadProductImage()
    {
        int ProductID = Convert.ToInt32(clsEncrypt.Decrypt(HttpContext.Current.Request["ProductID"]));
        string PhysicalFolderPath = "~/Images/Product/";

        for (int j = 0; j < HttpContext.Current.Request.Files.Count; j++)
        {
            HttpPostedFile uploadFile = HttpContext.Current.Request.Files[j];
            string extention = System.IO.Path.GetExtension(uploadFile.FileName);
            UploadPic(uploadFile, j++, PhysicalFolderPath, ProductID);
        }
    }

    protected void UploadPic(HttpPostedFile FUPhoto, int sort, string RemotePath, int ProductID)
    {
        if (FUPhoto.FileName != "")
        {
            string ImgUploadResponse = "";
            string strExt = Path.GetExtension(FUPhoto.FileName).Trim().ToLower();
            string ImageName = DateTime.Now.ToFileTimeUtc() + strExt;
            string OriginalImageFullPath = "~/Images/Product/" + ImageName;
            if (Directory.Exists(HttpContext.Current.Server.MapPath("~/Images/Product/")).Equals(false))
                Directory.CreateDirectory(HttpContext.Current.Server.MapPath("~/Images/Product/"));
            FUPhoto.SaveAs(HttpContext.Current.Server.MapPath(OriginalImageFullPath));

            ProductImageEntity objProdImage = new ProductImageEntity();
            objProdImage.ProductID = ProductID;
            if (ImgUploadResponse != "")
                objProdImage.Image = "";
            else
                objProdImage.Image = ImageName;
            if (!String.IsNullOrEmpty(objProdImage.Image))
                new ProductImageBLL().InsertUpdateProductImage(objProdImage);
        }
    }


3 Réponses :


1
votes

Veuillez vous référer au code ci-dessous pour le logo Watermark pour ajouter du côté du code.

using (Image image = Image.FromFile(@"C:\Users\Public\Pictures\Sample Pictures\Desert.jpg"))
    using (Image watermarkImage = Image.FromFile(@"C:\Users\Public\Pictures\Sample Pictures\watermark.png"))
    using (Graphics imageGraphics = Graphics.FromImage(image))
    using (TextureBrush watermarkBrush = new TextureBrush(watermarkImage))
    {
        int x = (image.Width / 2 - watermarkImage.Width / 2);
        int y = (image.Height / 2 - watermarkImage.Height / 2);
        watermarkBrush.TranslateTransform(x, y);
        imageGraphics.FillRectangle(watermarkBrush, new Rectangle(new Point(x, y), new Size(watermarkImage.Width+1, watermarkImage.Height)));
        image.Save(@"C:\Users\Public\Pictures\Sample Pictures\Desert_watermark.jpg");
    }


1 commentaires

Bienvenue, pas de problème.



0
votes

Récemment, j'ai publié un package de pépite qui ajoutez une marque d'eau d'image avec le contrôle sur l'opacité et la tache cibles pour placer le filigrane. Nugget: p>

Install-package Lazziya.imageresize code> p>

alors vous pouvez utiliser le code ci-dessous: P>

//get image from local path
var img = Image.FromFile("wwwroot\\images\\lum3n-358833-unsplash.jpg");

//scale and crop, 600x250 center focus 
var newImg = ImageResize.ScaleAndCrop(img, 600, 250, TargetSpot.Center);

//watermark image path
var imgWatermark = "wwwroot\\images\\icon.png";

//add image watermark
newImg.ImageWatermark(imgWatermark, 
                TargetSpot.TopRight, //define target spot
                10,                  //margin
                37);                 //opacity (0-100)

//save new image
newImg.SaveAs("wwwroot\\images\\600x250-image-watermark.jpg");

//dispose to free up memory
img.Dispose();
newImg.Dispose();



0
votes

J'ai installé et essayé votre DLL. Tout est bon mais un problème. Le texte de filigrane est ajouté verticalement aux images verticales (images dont la hauteur est plus grande que la largeur). Une meilleure solution consiste à ajouter du filigrane dans une ligne horizantique aux images verticales ainsi que des images horizantatives. Merci quand même.

- Edit -

J'ai résolu le problème dans ce code, qui vérifie et modifie l'orientation de l'image dans le besoin. (UploadEDImage est l'image que j'ai lu depuis le flux) xxx


0 commentaires