Ejemplo n.º 1
0
        public Watermark AddOne(ImageAttrModel model)
        {
            var watermark = _providerWatermark.AddOne(_converter.ConvertTo(model));

            _providerWatermark.Commit();
            return(watermark);
        }
Ejemplo n.º 2
0
        /// <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);
            }
        }
Ejemplo n.º 3
0
 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
     });
 }
Ejemplo n.º 4
0
        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);
                }
            }
        }
Ejemplo n.º 5
0
        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));
                }
            }
        }