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(""); } }
/// <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(""); } }
/// <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(""); } }
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))); } } }
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); }
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)); } } }
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)); } } }
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); } }
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); } }
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)); } }
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)); } }
/// <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(""); } }