Example #1
0
        public static string AddWatermarkOnImage(byte[] mainImage, byte[] watermarkFileImage, float watermarkOpacity, WatermarkPositionEnum position, out Exception exc, string outputFilePath = "")
        {
            try
            {
                if (watermarkOpacity >= 0.0 && watermarkOpacity < 1.0)
                {
                    Exception exceptionWM  = null;
                    Exception exceptionWMC = null;

                    Image watermarkImage = SetImageOpacity(watermarkFileImage, watermarkOpacity, out exceptionWM);
                    if (exceptionWM != null)
                    {
                        throw exceptionWM;
                    }
                    var watermarkContent = ImageToByteArray(watermarkImage, out exceptionWMC);
                    if (exceptionWMC != null)
                    {
                        throw exceptionWMC;
                    }
                    return(AddWatermarkOnImage(mainImage, watermarkContent, position, out exc, outputFilePath));
                }
                return(AddWatermarkOnImage(mainImage, watermarkFileImage, position, out exc, outputFilePath));
            }
            catch (Exception ex)
            {
                exc = ex;
                return("");
            }
        }
Example #2
0
        /// <summary>
        /// Adding Watermark on Images
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="watermarkFileName"></param>
        /// <param name="position"></param>
        /// <param name="exc"></param>
        public static string AddWatermarkOnImage(string filePath, string watermarkFilePath, WatermarkPositionEnum position, out Exception exc, string outputFilePath = "")
        {
            try
            {
                if (string.IsNullOrEmpty(outputFilePath) || string.IsNullOrWhiteSpace(outputFilePath))
                {
                    outputFilePath = filePath;
                }
                //if (!FileHelper.ExistFileInInput(fileName))
                //{
                //    exc = new Exception("File Not Found");
                //    return "";
                //}

                //if (!FileHelper.ExistFileInInput(fileName))
                //{
                //    exc = new Exception("Watermark File Not Found");
                //    return "";
                //}

                using (Image image = Image.FromFile(filePath))
                    using (Image watermarkImage = Image.FromFile(watermarkFilePath))
                        using (Graphics imageGraphics = Graphics.FromImage(image))
                            using (TextureBrush watermarkBrush = new TextureBrush(watermarkImage))
                            {
                                int x = 10;
                                int y = 10;
                                switch (position)
                                {
                                case WatermarkPositionEnum.TopLeft:
                                    x = 10;
                                    y = 10;
                                    break;

                                case WatermarkPositionEnum.TopRight:
                                    x = image.Width - watermarkImage.Width - 10;
                                    y = 10;
                                    break;

                                case WatermarkPositionEnum.BottomLeft:
                                    x = 10;
                                    y = image.Height - watermarkImage.Height - 10;
                                    break;

                                case WatermarkPositionEnum.BottomRight:
                                    x = image.Width - watermarkImage.Width - 10;
                                    y = image.Height - watermarkImage.Height - 10;
                                    break;

                                default:
                                    break;
                                }
                                watermarkBrush.TranslateTransform(x, y);
                                imageGraphics.FillRectangle(watermarkBrush, new Rectangle(new Point(x, y), new Size(watermarkImage.Width + 1, watermarkImage.Height)));
                                image.Save(outputFilePath);
                            }
                exc = null;
                return(outputFilePath);
            }
            catch (Exception ex)
            {
                exc = ex;
                return("");
            }
        }
Example #3
0
        /// <summary>
        /// Adding Watermark on Images
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="watermarkFileName"></param>
        /// <param name="position"></param>
        /// <param name="exc"></param>
        public static string AddWatermarkOnImage(byte[] mainImage, byte[] watermarkFileImage, WatermarkPositionEnum position, out Exception exc, string outputFilePath = "")
        {
            try
            {
                //if (!FileHelper.ExistFileInInput(fileName))
                //{
                //    exc = new Exception("File Not Found");
                //    return "";
                //}

                //if (!FileHelper.ExistFileInInput(fileName))
                //{
                //    exc = new Exception("Watermark File Not Found");
                //    return "";
                //}

                using (var memStreamMain = new MemoryStream(mainImage))
                    using (var memStreamWater = new MemoryStream(watermarkFileImage))
                        using (Image image = Image.FromStream(memStreamMain))
                            using (Image watermarkImage = Image.FromStream(memStreamWater))
                                using (Graphics imageGraphics = Graphics.FromImage(image))
                                    using (TextureBrush watermarkBrush = new TextureBrush(watermarkImage))
                                    {
                                        int x       = 10;
                                        int y       = 10;
                                        int wRepeat = 1;
                                        int hRepeat = 1;
                                        switch (position)
                                        {
                                        case WatermarkPositionEnum.TopLeft:
                                            x = 10;
                                            y = 10;
                                            break;

                                        case WatermarkPositionEnum.TopRight:
                                            x = image.Width - watermarkImage.Width - 10;
                                            y = 10;
                                            break;

                                        case WatermarkPositionEnum.BottomLeft:
                                            x = 10;
                                            y = image.Height - watermarkImage.Height - 10;
                                            break;

                                        case WatermarkPositionEnum.BottomRight:
                                            x = image.Width - watermarkImage.Width - 10;
                                            y = image.Height - watermarkImage.Height - 10;
                                            break;

                                        case WatermarkPositionEnum.Repeat:
                                            x       = image.Width - watermarkImage.Width;
                                            y       = 0;
                                            wRepeat = (image.Width / watermarkImage.Width) + 1 + 1;
                                            hRepeat = (image.Height / watermarkImage.Height) + 1 + 1;
                                            break;

                                        default:
                                            break;
                                        }
                                        watermarkBrush.TranslateTransform(x, y);
                                        for (int i = 0; i < hRepeat; i++)
                                        {
                                            for (int j = 0; j < wRepeat; j++)
                                            {
                                                imageGraphics.FillRectangle(watermarkBrush, new Rectangle(new Point(x, y), new Size(watermarkImage.Width + 1, watermarkImage.Height)));
                                                x -= watermarkImage.Width;
                                            }
                                            x  = image.Width - watermarkImage.Width;
                                            y += watermarkImage.Height;
                                        }
                                        image.Save(outputFilePath);
                                    }
                exc = null;
                return(outputFilePath);
            }
            catch (Exception ex)
            {
                exc = ex;
                return("");
            }
        }
Example #4
0
 public static Image AddWatermarkImg(Stream originImageStream, string imgExtensionName, string watermarkImgPath, WatermarkPositionEnum watermarkPosition = WatermarkPositionEnum.RightButtom, int textPadding = 10)
 {
     if (originImageStream == null)
     {
         return(null);
     }
     using (var originImage = Image.FromStream(originImageStream))
     {
         if (!string.IsNullOrEmpty(watermarkImgPath))
         {
             using (var watermarkImg = Image.FromFile(watermarkImgPath))
             {
                 return(Image.FromStream(AddWatermark(originImage, imgExtensionName, watermarkImg, watermarkPosition, textPadding)));
             }
         }
         else
         {
             return(Image.FromStream(AddWatermark(originImage, imgExtensionName, null, watermarkPosition, textPadding)));
         }
     }
 }
Example #5
0
 public ImgCutter(ConcurrentBag <string> imgPathQueue, int width, int height, string rootPath, string savePath = "", bool isSetWatermark = false, WatermarkTypeEnum watermarkType = WatermarkTypeEnum.Text, WatermarkPositionEnum watermarkPosition = WatermarkPositionEnum.RightButtom, string watermarkTextOrImgPath = "", int taskMaxNum = 0)
 {
     imgPathQueue.AsParallel().ForAll(imgPath =>
     {
         CuttingSettingQueue.Enqueue(new CutterSetting
         {
             CutHeight           = height,
             CutWidth            = width,
             ImgPath             = imgPath,
             RootPath            = rootPath,
             SavePath            = savePath,
             IsSetWatermark      = isSetWatermark,
             WatermarkPosition   = watermarkPosition,
             WatermarkType       = watermarkType,
             WatermarkTextOrPath = watermarkTextOrImgPath
         });
     });
     TotalCount     = CuttingSettingQueue.Count;
     TaskMaxNum     = taskMaxNum <= 0 ? Environment.ProcessorCount + 2 : taskMaxNum;
     TaskSupervisor = new TaskSupervisor(TaskMaxNum);
 }
Example #6
0
 public static MemoryStream AddWatermark(string originImagePath, string watermarkImgPath, WatermarkPositionEnum watermarkPosition = WatermarkPositionEnum.RightButtom, int textPadding = 10)
 {
     if (string.IsNullOrEmpty(originImagePath))
     {
         return(null);
     }
     using (var originImage = Image.FromFile(originImagePath))
     {
         var imgExtensionName = "." + originImagePath.Split('.').Last();
         if (!string.IsNullOrEmpty(watermarkImgPath))
         {
             using (var watermarkImg = Image.FromFile(watermarkImgPath))
             {
                 return(AddWatermark(originImage, imgExtensionName, watermarkImg, watermarkPosition, textPadding));
             }
         }
         else
         {
             return(AddWatermark(originImage, imgExtensionName, null, watermarkPosition, textPadding));
         }
     }
 }
Example #7
0
 public static MemoryStream AddWatermark(Stream originImageStream, string imgExtensionName, Stream watermarkImgStream, WatermarkPositionEnum watermarkPosition = WatermarkPositionEnum.RightButtom, int textPadding = 10)
 {
     if (originImageStream == null)
     {
         return(null);
     }
     using (var originImage = Image.FromStream(originImageStream))
     {
         if (watermarkImgStream != null)
         {
             using (var watermarkImg = Image.FromStream(watermarkImgStream))
             {
                 return(AddWatermark(originImage, imgExtensionName, watermarkImg, watermarkPosition, textPadding));
             }
         }
         else
         {
             return(AddWatermark(originImage, imgExtensionName, null, watermarkPosition, textPadding));
         }
     }
 }
Example #8
0
        public static MemoryStream AddWatermark(Image originImage, string imgExtensionName, string watermarkText, Color color, WatermarkPositionEnum watermarkPosition = WatermarkPositionEnum.RightButtom, int textPadding = 10, int fontSize = 20, Font font = null)
        {
            if (originImage == null)
            {
                return(null);
            }
            using (var graphic = Graphics.FromImage(originImage))
            {
                if (!string.IsNullOrEmpty(watermarkText))
                {
                    var brush = new SolidBrush(color);

                    if (fontSize < 5)
                    {
                        fontSize = 5;
                    }

                    var f = font ?? new Font(FontFamily.GenericSansSerif, fontSize,
                                             FontStyle.Bold, GraphicsUnit.Pixel);

                    var textSize = graphic.MeasureString(watermarkText, f);
                    int x = textPadding, y = textPadding;

                    switch (watermarkPosition)
                    {
                    case WatermarkPositionEnum.LeftTop:
                        x = textPadding; y = textPadding;
                        break;

                    case WatermarkPositionEnum.LeftCenter:
                        x = textPadding;
                        y = (int)((originImage.Height / 2.0) - textSize.Height - textPadding);
                        break;

                    case WatermarkPositionEnum.LeftButtom:
                        x = textPadding;
                        y = originImage.Height - (int)textSize.Height - textPadding;
                        break;

                    case WatermarkPositionEnum.CenterTop:
                        x = (int)((originImage.Width / 2) - textSize.Width - textPadding);
                        y = textPadding;
                        break;

                    case WatermarkPositionEnum.Center:
                        x = (int)((originImage.Width / 2) - textSize.Width - textPadding);
                        y = originImage.Height - (int)textSize.Height - textPadding;
                        break;

                    case WatermarkPositionEnum.CenterButtom:
                        x = (int)((originImage.Width / 2) - textSize.Width - textPadding);
                        y = originImage.Height - (int)textSize.Height - textPadding;
                        break;

                    case WatermarkPositionEnum.RightTop:
                        x = originImage.Width - (int)textSize.Width - textPadding;
                        y = textPadding;
                        break;

                    case WatermarkPositionEnum.RightCenter:
                        x = originImage.Width - (int)textSize.Width - textPadding;
                        y = (int)((originImage.Height / 2.0) - textSize.Height - textPadding);
                        break;

                    case WatermarkPositionEnum.RightButtom:
                        x = originImage.Width - (int)textSize.Width - textPadding;
                        y = originImage.Height - (int)textSize.Height - textPadding;
                        break;

                    default:
                        x = textPadding; y = textPadding;
                        break;
                    }

                    graphic.DrawString(watermarkText, f, brush, new Point(x, y));
                }

                ImageFormat fmt = null;
                switch (imgExtensionName)
                {
                case ".png":
                    fmt = ImageFormat.Png;
                    break;

                case ".jpg":
                case ".jpeg":
                    fmt = ImageFormat.Jpeg;
                    break;

                case ".bmp":
                    fmt = ImageFormat.Bmp;
                    break;

                default:
                    fmt = ImageFormat.Jpeg;
                    break;
                }
                var watermarkedStream = new MemoryStream();
                originImage.Save(watermarkedStream, fmt);
                return(watermarkedStream);
            }
        }
Example #9
0
        public static MemoryStream AddWatermark(Image originImage, string imgExtensionName, Image watermarkImg, WatermarkPositionEnum watermarkPosition = WatermarkPositionEnum.RightButtom, int textPadding = 10)
        {
            if (originImage == null)
            {
                return(null);
            }
            using (var graphic = Graphics.FromImage(originImage))
            {
                if (watermarkImg != null)
                {
                    var width  = (int)(originImage.Width * 0.3);
                    var height = (int)(originImage.Height * 0.3);
                    watermarkImg = ZoomImage(watermarkImg, width, height);
                    int x = textPadding, y = textPadding;
                    switch (watermarkPosition)
                    {
                    case WatermarkPositionEnum.LeftTop:
                        x = textPadding; y = textPadding;
                        break;

                    case WatermarkPositionEnum.LeftCenter:
                        x = textPadding;
                        y = (int)((originImage.Height / 2.0) - watermarkImg.Height - textPadding);
                        break;

                    case WatermarkPositionEnum.LeftButtom:
                        x = textPadding;
                        y = originImage.Height - (int)watermarkImg.Height - textPadding;
                        break;

                    case WatermarkPositionEnum.CenterTop:
                        x = (int)((originImage.Width / 2) - watermarkImg.Width - textPadding);
                        y = textPadding;
                        break;

                    case WatermarkPositionEnum.Center:
                        x = (int)((originImage.Width / 2) - watermarkImg.Width - textPadding);
                        y = originImage.Height - (int)watermarkImg.Height - textPadding;
                        break;

                    case WatermarkPositionEnum.CenterButtom:
                        x = (int)((originImage.Width / 2) - watermarkImg.Width - textPadding);
                        y = originImage.Height - (int)watermarkImg.Height - textPadding;
                        break;

                    case WatermarkPositionEnum.RightTop:
                        x = originImage.Width - (int)watermarkImg.Width - textPadding;
                        y = textPadding;
                        break;

                    case WatermarkPositionEnum.RightCenter:
                        x = originImage.Width - (int)watermarkImg.Width - textPadding;
                        y = (int)((originImage.Height / 2.0) - watermarkImg.Height - textPadding);
                        break;

                    case WatermarkPositionEnum.RightButtom:
                        x = originImage.Width - (int)watermarkImg.Width - textPadding;
                        y = originImage.Height - (int)watermarkImg.Height - textPadding;
                        break;

                    default:
                        x = textPadding; y = textPadding;
                        break;
                    }

                    graphic.DrawImage(watermarkImg, new Point(x, y));
                }

                ImageFormat fmt = null;
                switch (imgExtensionName)
                {
                case ".png":
                    fmt = ImageFormat.Png;
                    break;

                case ".jpg":
                case ".jpeg":
                    fmt = ImageFormat.Jpeg;
                    break;

                case ".bmp":
                    fmt = ImageFormat.Bmp;
                    break;
                }
                var watermarkedStream = new MemoryStream();
                originImage.Save(watermarkedStream, fmt);
                return(watermarkedStream);
            }
        }
Example #10
0
 public static MemoryStream AddWatermark(Stream originImageStream, string imgExtensionName, string watermarkText, Color color, WatermarkPositionEnum watermarkPosition = WatermarkPositionEnum.RightButtom, int textPadding = 10, int fontSize = 20, Font font = null)
 {
     if (originImageStream == null)
     {
         return(null);
     }
     using (var img = Image.FromStream(originImageStream))
     {
         return(AddWatermark(img, imgExtensionName, watermarkText, color, watermarkPosition, textPadding, fontSize, font));
     }
 }
Example #11
0
        public static MemoryStream AddWatermark(string originImagePath, string watermarkText, Color color, WatermarkPositionEnum watermarkPosition = WatermarkPositionEnum.RightButtom, int textPadding = 10, int fontSize = 20, Font font = null)
        {
            if (string.IsNullOrEmpty(originImagePath))
            {
                return(null);
            }

            using (var img = Image.FromFile(originImagePath))
            {
                var imgExtensionName = "." + originImagePath.Split('.').Last();
                return(AddWatermark(img, imgExtensionName, watermarkText, color, watermarkPosition, textPadding, fontSize, font));
            }
        }
Example #12
0
        /// <summary>
        /// Adding Watermark On Videoes
        /// </summary>
        /// <param name="filePath"></param>
        /// <param name="watermarkFilePath"></param>
        /// <param name="position"></param>
        /// <param name="exc"></param>
        public string AddWatermarkOnVideo(string filePath, string watermarkFilePath, WatermarkPositionEnum position, string outputFilePath = "")
        {
            try
            {
                if (string.IsNullOrEmpty(outputFilePath) || string.IsNullOrWhiteSpace(outputFilePath))
                {
                    outputFilePath = filePath;
                }
                if (!File.Exists(_mhandler.InputPath + filePath))
                {
                    SetException("File Not Found");
                    return("");
                }

                if (!File.Exists(_mhandler.InputPath + watermarkFilePath))
                {
                    SetException("Watermark File Not Found");
                    return("");
                }


                string ffmpeg = MediaConfigPath.PathFFMPEG;

                System.Diagnostics.Process ffmpegProcess = new System.Diagnostics.Process();

                System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);

                startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                //startInfo.CreateNoWindow = true;
                //startInfo.UseShellExecute = false;
                //startInfo.RedirectStandardError = true;
                //startInfo.RedirectStandardOutput = true;

                string overlay = "10:10";
                switch (position)
                {
                case WatermarkPositionEnum.TopLeft:
                    overlay = "10:10";
                    break;

                case WatermarkPositionEnum.TopRight:
                    overlay = "main_w-overlay_w-10:10";
                    break;

                case WatermarkPositionEnum.BottomLeft:
                    overlay = "10:main_h-overlay_h-10";
                    break;

                case WatermarkPositionEnum.BottomRight:
                    overlay = "main_w-overlay_w-10:main_h-overlay_h-10";
                    break;

                default:
                    overlay = "10:10";
                    break;
                }

                startInfo.Arguments = $"-y -i {MediaConfigPath.PathInputs + filePath} -i {MediaConfigPath.PathWatermarks + watermarkFilePath} -filter_complex \"overlay = {overlay}\" {MediaConfigPath.PathOutputs + outputFilePath}";

                var rs = System.Diagnostics.Process.Start(startInfo);
                rs.WaitForExit();
                //string outut = rs.StandardOutput.ReadToEnd();
                //string error = rs.StandardError.ReadToEnd();
                //int exitCode = rs.ExitCode;
                //if(!string.IsNullOrEmpty(error) && !string.IsNullOrWhiteSpace(error))
                //{
                //    throw new Exception(error);
                //}
                //return outut;
                return(MediaConfigPath.PathOutputs + outputFilePath);
            }
            catch (Exception ex)
            {
                SetException(ex);
                return("");
            }
        }