public Watermark AddOne(ImageAttrModel model) { var watermark = _providerWatermark.AddOne(_converter.ConvertTo(model)); _providerWatermark.Commit(); return(watermark); }
/// <summary> /// Получение фотографии /// </summary> /// <param name="photoId">Идентификатор фотографии</param> /// <returns></returns> public byte[] GetPhoto(int photoId, string photoPath) { try { var textAttributes = _textAttrService.GetAll().FirstOrDefault(); var watermark = _watermarkService.GetAll().FirstOrDefault(x => x.PhotoId == photoId); if (textAttributes == null) { textAttributes = new Data.Entities.TextAttributes() { WatermarkFont = "Bell MT", WatermarkFontSize = 60, WatermarkText = "*****@*****.**", SignatureFont = "Edwardian Script ITC", SignatureFontSize = 43, SignatureText = "© Alexander Serebryakov", StampFont = "Bell MT", StampFontSize = 45, StampText = "www.askanio.ru", Alpha = 80 } } ; var imageAttributes = new ImageAttrModel(watermark); return(new ImageProcessor(photoPath, Settings.Default.ThumbPath, textAttributes).Watermark(imageAttributes)); } catch (Exception ex) { Log.RegisterError(ex); return(null); } }
public Watermark ConvertTo(ImageAttrModel model) { return(new Watermark() { Id = model.Id, PhotoId = model.PhotoId, IsWatermarkApplied = model.IsWatermarkApplied, IsWatermarkBlack = model.IsWatermarkBlack, IsSignatureApplied = model.IsSignatureApplied, IsSignatureBlack = model.IsSignatureBlack, IsWebSiteTitleApplied = model.IsWebSiteTitleApplied, IsWebSiteTitleBlack = model.IsWebSiteTitleBlack, IsRightSide = model.IsRightSide }); }
public static void WatermarkImage(string path, HttpPostedFileBase file, ImageAttrModel attributes, TextAttributes textAttributes) { if (textAttributes == null) { textAttributes = new TextAttributes() { WatermarkFont = "Bell MT", WatermarkFontSize = 60, WatermarkText = "*****@*****.**", SignatureFont = "Edwardian Script ITC", SignatureFontSize = 43, SignatureText = "© Alexander Serebryakov", StampFont = "Bell MT", StampFontSize = 45, StampText = "www.askanio.ru" }; } Random random = new Random(); var watermarkFormat = new StringFormat() { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }; var textFormat = new StringFormat() { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Near }; using (Image image = Image.FromStream(file.InputStream)) { using (Graphics imageGraphics = Graphics.FromImage(image)) { imageGraphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit; if (attributes.IsSignatureApplied) { using (Font signatureFont = new Font(textAttributes.SignatureFont, textAttributes.SignatureFontSize, FontStyle.Regular, GraphicsUnit.Pixel)) { //Font adaptedWatermarlFont = CalculateFont(imageGraphics, signature, new Size(image.Width / 4, image.Height / 4), signatureFont); SizeF actualSize = imageGraphics.MeasureString(textAttributes.SignatureText, signatureFont); imageGraphics.DrawString(textAttributes.SignatureText, signatureFont, attributes.IsSignatureBlack ? Brushes.Black : Brushes.White, attributes.IsRightSide ? new PointF(image.Width - actualSize.Width, image.Height - actualSize.Height) : new PointF(10f, image.Height - actualSize.Height), textFormat); } } if (attributes.IsWebSiteTitleApplied) { using (Font stampFont = new Font(textAttributes.StampFont, textAttributes.StampFontSize, FontStyle.Regular, GraphicsUnit.Pixel)) { // Font adaptedWatermarlFont = CalculateFont(imageGraphics, stamp, new Size(120, 20), stampFont); SizeF actualSize = imageGraphics.MeasureString(textAttributes.StampText, stampFont); imageGraphics.DrawString(textAttributes.StampText, stampFont, attributes.IsWebSiteTitleBlack ? Brushes.Black : Brushes.White, attributes.IsRightSide ? new PointF(image.Width - actualSize.Width, image.Height - actualSize.Height - 60f) : new PointF(10f, image.Height - actualSize.Height - 60f), textFormat); } } if (attributes.IsWatermarkApplied) { using (Font watermarkFont = new Font(textAttributes.WatermarkFont, textAttributes.WatermarkFontSize, FontStyle.Regular, GraphicsUnit.Pixel)) { // Font adaptedWatermarkFont = CalculateFont(imageGraphics, watermark, new Size(image.Width / 2, image.Height / 2), watermarkFont); SizeF actualSize = imageGraphics.MeasureString(textAttributes.WatermarkText, watermarkFont); imageGraphics.DrawString(textAttributes.WatermarkText, watermarkFont, new SolidBrush(Color.FromArgb(80, attributes.IsWatermarkBlack? Color.Black : Color.White)), (image.Width / 2) + random.Next(40), (image.Height / 2) + random.Next(40), watermarkFormat); } } if (Array.IndexOf(image.PropertyIdList, 274) > -1) { var orientation = (int)image.GetPropertyItem(274).Value[0]; switch (orientation) { case 1: // No rotation required. break; case 2: image.RotateFlip(RotateFlipType.RotateNoneFlipX); break; case 3: image.RotateFlip(RotateFlipType.Rotate180FlipNone); break; case 4: image.RotateFlip(RotateFlipType.Rotate180FlipX); break; case 5: image.RotateFlip(RotateFlipType.Rotate90FlipX); break; case 6: image.RotateFlip(RotateFlipType.Rotate270FlipNone); image.RotateFlip(RotateFlipType.Rotate90FlipNone); break; case 7: image.RotateFlip(RotateFlipType.Rotate270FlipX); break; case 8: image.RotateFlip(RotateFlipType.Rotate270FlipNone); image.RotateFlip(RotateFlipType.Rotate90FlipNone);; break; } // This EXIF data is now invalid and should be removed. image.RemovePropertyItem(274); } image.Save(HttpContext.Current.Server.MapPath(path), image.RawFormat); } } }
public byte[] Watermark(ImageAttrModel attributes) { Random random = new Random(); var watermarkFormat = new StringFormat() { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }; var textFormat = new StringFormat() { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Near }; using (Image image = Image.FromFile(HttpContext.Current.Server.MapPath(_photoPath), true)) { using (Graphics imageGraphics = Graphics.FromImage(image)) { imageGraphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit; if (attributes.IsSignatureApplied) { using (Font signatureFont = new Font(GetFontFamily(TextAttributes.SignatureFont), TextAttributes.SignatureFontSize, FontStyle.Regular, GraphicsUnit.Pixel)) { SizeF actualSize = imageGraphics.MeasureString(TextAttributes.SignatureText, signatureFont); imageGraphics.DrawString(TextAttributes.SignatureText, signatureFont, attributes.IsSignatureBlack ? Brushes.Black : Brushes.White, attributes.IsRightSide ? new PointF(image.Width - actualSize.Width, image.Height - actualSize.Height) : new PointF(10f, image.Height - actualSize.Height), textFormat); } } if (attributes.IsWebSiteTitleApplied) { using (Font stampFont = new Font(GetFontFamily(TextAttributes.StampFont), TextAttributes.StampFontSize, FontStyle.Regular, GraphicsUnit.Pixel)) { SizeF actualSize = imageGraphics.MeasureString(TextAttributes.StampText, stampFont); imageGraphics.DrawString(TextAttributes.StampText, stampFont, attributes.IsWebSiteTitleBlack ? Brushes.Black : Brushes.White, attributes.IsRightSide ? new PointF(image.Width - actualSize.Width, image.Height - actualSize.Height - 60f) : new PointF(10f, image.Height - actualSize.Height - 60f), textFormat); } } if (attributes.IsWatermarkApplied) { using (Font watermarkFont = new Font(GetFontFamily(TextAttributes.WatermarkFont), TextAttributes.WatermarkFontSize, FontStyle.Regular, GraphicsUnit.Pixel)) { SizeF actualSize = imageGraphics.MeasureString(TextAttributes.WatermarkText, watermarkFont); imageGraphics.DrawString(TextAttributes.WatermarkText, watermarkFont, new SolidBrush(Color.FromArgb(TextAttributes.Alpha, attributes.IsWatermarkBlack? Color.Black : Color.White)), (image.Width / 2) + random.Next(40), (image.Height / 2) + random.Next(40), watermarkFormat); } } RotateImage(image); return(ImageToByteArray(image)); } } }