Exemple #1
0
        public static Image addWaterMark(Image orig, Image watermark, Uniqueizer.eWatermarkPosition position)
        {
            // 0 w/3 w*2/3
            double    resolution = Globals.settings.GetWatermarkResolution();
            Point     location   = new Point();
            Rectangle waterMark  = new Rectangle();

            waterMark.Width  = (int)Math.Round(orig.Width / resolution);
            waterMark.Height = (int)Math.Round(((orig.Width / resolution) * watermark.Height) / watermark.Width);
            //[orig.Width / 3] / x : watermark.Width / watermark.Height
            //x = ((orig.Width / 3) * watermark.Height) / waterMark.Width

            using (Graphics g = Graphics.FromImage(orig))
            {
                switch (position)
                {
                case Uniqueizer.eWatermarkPosition.UP_LEFT:
                case Uniqueizer.eWatermarkPosition.UP_MIDDLE:
                case Uniqueizer.eWatermarkPosition.UP_RIGHT:
                    location.Y = 0;
                    break;

                case Uniqueizer.eWatermarkPosition.CENTER_LEFT:
                case Uniqueizer.eWatermarkPosition.CENTER_MIDDLE:
                case Uniqueizer.eWatermarkPosition.CENTER_RIGHT:
                    location.Y = orig.Height / 2 - (waterMark.Height / 2);
                    break;

                case Uniqueizer.eWatermarkPosition.DOWN_LEFT:
                case Uniqueizer.eWatermarkPosition.DOWN_MIDDLE:
                case Uniqueizer.eWatermarkPosition.DOWN_RIGHT:
                    location.Y = orig.Height - waterMark.Height;
                    break;
                }
                switch (position)
                {
                case Uniqueizer.eWatermarkPosition.CENTER_LEFT:
                case Uniqueizer.eWatermarkPosition.DOWN_LEFT:
                case Uniqueizer.eWatermarkPosition.UP_LEFT:
                    location.X = 0;
                    break;

                case Uniqueizer.eWatermarkPosition.CENTER_MIDDLE:
                case Uniqueizer.eWatermarkPosition.DOWN_MIDDLE:
                case Uniqueizer.eWatermarkPosition.UP_MIDDLE:
                    location.X = orig.Width / 2 - waterMark.Width / 2;
                    break;

                case Uniqueizer.eWatermarkPosition.CENTER_RIGHT:
                case Uniqueizer.eWatermarkPosition.DOWN_RIGHT:
                case Uniqueizer.eWatermarkPosition.UP_RIGHT:
                    location.X = orig.Width - waterMark.Width;
                    break;
                }
                g.DrawImage(watermark, location.X, location.Y, waterMark.Width, waterMark.Height);
                g.Dispose();
            }
            return(orig);
        }
Exemple #2
0
        public static void ProcessPicture(string dir, string path, int pixel_count, Image watermark, Uniqueizer.eWatermarkPosition position)
        {
            try
            {
                Log.AddMessage("dir: " + dir + " path: " + path + " pixel_count: " + pixel_count.ToString() + " image: " + (watermark == null ? "null" : "normal " + watermark.RawFormat.ToString()));
                FileInfo      fInfo       = new FileInfo(path);
                DirectoryInfo dParentSave = fInfo.Directory;

                string save_dir  = dir + "_lightning" + ((dParentSave != fInfo.Directory) ? "\\" + fInfo.Directory.Name : "");
                string save_file = save_dir + "\\0" + fInfo.Name;
                Random rand      = new Random((int)DateTime.Now.Ticks + DateTime.Now.Millisecond + DateTime.Now.Second + DateTime.Now.Minute);
                if (!Directory.Exists(save_dir))
                {
                    Directory.CreateDirectory(save_dir);
                }
                Image image = getImage(path);
                if (Globals.settings.Instance.bUseWatermark)
                {
                    if (position == Uniqueizer.eWatermarkPosition.RANDOM)
                    {
                        image = addWaterMark(image, watermark, rand, Globals.settings.Instance.iWatermarksCount);
                    }
                    else
                    {
                        image = addWaterMark(image, watermark, position);
                    }
                }
                if (Globals.settings.Instance.bRandomRotate)
                {
                    image = rotateImage(image, rand.NextDouble() + rand.Next(-1, 1));
                }
                if (Globals.settings.Instance.bRandomCrop)
                {
                    Point crop_right = new Point(rand.Next(3, 10), rand.Next(3, 10));
                    image = cropImage(image, new Rectangle(crop_right.X, crop_right.Y, image.Width - crop_right.X, image.Height - crop_right.Y));
                }
                image.Save(save_file);
                image.Dispose();
                GC.Collect();
            }
            catch (Exception e)
            {
                Log.AddMessage(e.Message + e.StackTrace);
            }
        }