Esempio n. 1
0
        /// <summary>
        /// 生成缩略图并打水印再保存。
        /// </summary>
        /// <Param name="originalImageStream">Stream</Param>
        /// <Param name="strFileName">源图路径(物理路径)</Param>
        /// <Param name="thumbnailPath">缩略图路径(物理路径)</Param>
        /// <Param name="maxWidth">缩略图最大宽度</Param>
        /// <Param name="maxheight">缩略图最大高度</Param>
        /// <Param name="mode">生成缩略图的方式</Param>
        /// <Param name="waterPath">水印图路径(物理路径)</Param>
        /// <Param name="edge">水印图离原图边界的距离</Param>
        /// <Param name="position">加图片水印的位置</Param>
        /// <returns>是否成功</returns>
        public static bool MakeThumbnailWater(Stream originalImageStream, string strFileName, string thumbnailPath, int maxWidth, int maxheight, ThumbnailModeOption mode, string waterPath, int edge, WaterPositionOption position)
        {
            bool success = false;

            try
            {
                // 生成缩略图
                MakeThumbnail(originalImageStream, strFileName, thumbnailPath, maxWidth, maxheight, mode);
                Stream stream = File.Open(thumbnailPath, FileMode.Open);
                //打水印
                MakeWaterImage(stream, strFileName, thumbnailPath, waterPath, edge, position);
                success = true;
            }
            catch (Exception /*ex*/)
            {
                success = false;
                throw;
            }
            return(success);
        }
Esempio n. 2
0
        /// <summary>
        /// 加水印图片并保存。
        /// </summary>
        /// <Param name="originalImageStream">Stream</Param>
        /// <Param name="strFileName">源图路径(物理路径)</Param>
        /// <Param name="savePath">图片保存路径(物理路径)</Param>
        /// <Param name="waterPath">水印图路径(物理路径)</Param>
        /// <Param name="edge">水印图离原图边界的距离</Param>
        /// <Param name="position">加图片水印的位置</Param>
        /// <returns>是否成功</returns>
        public static bool MakeWaterImage(Stream originalImageStream, string strFileName, string savePath, string waterPath, int edge, WaterPositionOption position)
        {
            bool success = false;

            int      x          = 0;
            int      y          = 0;
            Image    waterImage = null;
            Image    image      = null;
            Bitmap   bitmap     = null;
            Graphics graphics   = null;

            try
            {
                //加载原图
                image = Image.FromStream(originalImageStream);
                //加载水印图
                waterImage = Image.FromFile(waterPath);
                bitmap     = new Bitmap(image);
                graphics   = Graphics.FromImage(bitmap);

                int newEdge = edge;
                if (newEdge >= image.Width + waterImage.Width)
                {
                    newEdge = 10;
                }

                switch (position)
                {
                case WaterPositionOption.LeftTop:
                    x = newEdge;
                    y = newEdge;
                    break;

                case WaterPositionOption.CenterTop:
                    x = (image.Width - waterImage.Width) / 2;
                    y = newEdge;
                    break;

                case WaterPositionOption.RightTop:
                    x = image.Width - waterImage.Width - newEdge;
                    y = newEdge;
                    break;

                case WaterPositionOption.LeftBottom:
                    x = newEdge;
                    y = image.Height - waterImage.Height - newEdge;
                    break;

                case WaterPositionOption.CenterBottom:
                    x = (image.Width - waterImage.Width) / 2;
                    y = image.Height - waterImage.Height - newEdge;
                    break;

                case WaterPositionOption.RightBottom:
                    x = image.Width - waterImage.Width - newEdge;
                    y = image.Height - waterImage.Height - newEdge;
                    break;

                case WaterPositionOption.Middle:
                    x = (image.Width - waterImage.Width) / 2;
                    y = (image.Height - waterImage.Height) / 2;
                    break;

                default:
                    goto case WaterPositionOption.RightBottom;
                }

                // 画水印图片
                graphics.DrawImage(waterImage, new Rectangle(x, y, waterImage.Width, waterImage.Height), 0, 0, waterImage.Width, waterImage.Height, GraphicsUnit.Pixel);

                // 关闭打开着的文件并保存(覆盖)新图片
                originalImageStream.Close();
                bitmap.Save(savePath, GetImageFormat(strFileName));

                success = true;
            }
            catch (Exception /*ex*/)
            {
                success = false;
                throw;
                //throw new Exception(ex.Message.Replace("'", " ").Replace("\n", " ").Replace("\\", "/"));
            }
            finally
            {
                if (graphics != null)
                {
                    graphics.Dispose();
                }
                if (bitmap != null)
                {
                    bitmap.Dispose();
                }
                if (image != null)
                {
                    image.Dispose();
                }
                if (waterImage != null)
                {
                    waterImage.Dispose();
                }
            }

            return(success);
        }
Esempio n. 3
0
 /// <summary>
 /// 生成缩略图并打水印再保存。
 /// </summary>
 /// <param name="originalImageStream">Stream</param>
 /// <param name="strFileName">源图路径(物理路径)</param>
 /// <param name="thumbnailPath">缩略图路径(物理路径)</param>
 /// <param name="maxWidth">缩略图最大宽度</param>
 /// <param name="maxheight">缩略图最大高度</param>
 /// <param name="mode">生成缩略图的方式</param>
 /// <param name="waterPath">水印图路径(物理路径)</param>
 /// <param name="edge">水印图离原图边界的距离</param>
 /// <param name="position">加图片水印的位置</param>
 /// <returns>是否成功</returns>
 public static bool MakeThumbnailWater(Stream originalImageStream, string strFileName, string thumbnailPath, int maxWidth, int maxheight, ThumbnailModeOption mode, string waterPath, int edge, WaterPositionOption position)
 {
     bool success = false;
     try
     {
         // 生成缩略图
         MakeThumbnail(originalImageStream, strFileName, thumbnailPath, maxWidth, maxheight, mode);
         Stream stream = File.Open(thumbnailPath, FileMode.Open);
         //打水印
         MakeWaterImage(stream, strFileName, thumbnailPath, waterPath, edge, position);
         success = true;
     }
     catch (Exception ex)
     {
         success = false;
         throw;
     }
     return success;
 }
Esempio n. 4
0
        /// <summary>
        /// 加水印图片并保存。
        /// </summary>
        /// <param name="originalImageStream">Stream</param>
        /// <param name="strFileName">源图路径(物理路径)</param>
        /// <param name="savePath">图片保存路径(物理路径)</param>
        /// <param name="waterPath">水印图路径(物理路径)</param>
        /// <param name="edge">水印图离原图边界的距离</param>
        /// <param name="position">加图片水印的位置</param>
        /// <returns>是否成功</returns>
        public static void MakeWaterImage(Stream originalImageStream, string strFileName, string savePath, string waterPath, int edge, WaterPositionOption position)
        {
            Image    waterImage = null;
            Image    image      = null;
            Bitmap   bitmap     = null;
            Graphics graphics   = null;

            try
            {
                //加载原图
                image = Image.FromStream(originalImageStream);
                //加载水印图
                waterImage = Image.FromFile(waterPath);
                bitmap     = new Bitmap(image);
                graphics   = Graphics.FromImage(bitmap);

                int newEdge = edge;
                if (newEdge >= image.Width + waterImage.Width)
                {
                    newEdge = 10;
                }

                int x, y;
                switch (position)
                {
                case WaterPositionOption.LeftTop:
                    x = newEdge;
                    y = newEdge;
                    break;

                case WaterPositionOption.CenterTop:
                    x = (image.Width - waterImage.Width) / 2;
                    y = newEdge;
                    break;

                case WaterPositionOption.RightTop:
                    x = image.Width - waterImage.Width - newEdge;
                    y = newEdge;
                    break;

                case WaterPositionOption.LeftBottom:
                    x = newEdge;
                    y = image.Height - waterImage.Height - newEdge;
                    break;

                case WaterPositionOption.CenterBottom:
                    x = (image.Width - waterImage.Width) / 2;
                    y = image.Height - waterImage.Height - newEdge;
                    break;

                case WaterPositionOption.RightBottom:
                    x = image.Width - waterImage.Width - newEdge;
                    y = image.Height - waterImage.Height - newEdge;
                    break;

                case WaterPositionOption.Middle:
                    x = (image.Width - waterImage.Width) / 2;
                    y = (image.Height - waterImage.Height) / 2;
                    break;

                default:
                    goto case WaterPositionOption.RightBottom;
                }

                // 画水印图片
                graphics.DrawImage(waterImage, new Rectangle(x, y, waterImage.Width, waterImage.Height), 0, 0, waterImage.Width, waterImage.Height, GraphicsUnit.Pixel);

                // 关闭打开着的文件并保存(覆盖)新图片
                originalImageStream.Close();
                bitmap.Save(savePath, GetImageFormat(strFileName));
            }
            catch
            {
                throw;
            }
            finally
            {
                if (graphics != null)
                {
                    graphics.Dispose();
                }
                if (bitmap != null)
                {
                    bitmap.Dispose();
                }
                if (image != null)
                {
                    image.Dispose();
                }
                if (waterImage != null)
                {
                    waterImage.Dispose();
                }
            }
        }
Esempio n. 5
0
        /// <summary>
        /// 加水印图片并保存。
        /// </summary>
        /// <param name="originalImageStream">Stream</param>
        /// <param name="strFileName">源图路径(物理路径)</param>
        /// <param name="savePath">图片保存路径(物理路径)</param>
        /// <param name="waterPath">水印图路径(物理路径)</param>
        /// <param name="edge">水印图离原图边界的距离</param>
        /// <param name="position">加图片水印的位置</param>
        /// <returns>是否成功</returns>
        public static bool MakeWaterImage(Stream originalImageStream, string strFileName, string savePath, string waterPath, int edge, WaterPositionOption position)
        {
            bool success = false;

            int x = 0;
            int y = 0;
            Image waterImage = null;
            Image image = null;
            Bitmap bitmap = null;
            Graphics graphics = null;

            try
            {
                //加载原图
                image = Image.FromStream(originalImageStream);
                //加载水印图
                waterImage = Image.FromFile(waterPath);
                bitmap = new Bitmap(image);
                graphics = Graphics.FromImage(bitmap);

                int newEdge = edge;
                if (newEdge >= image.Width + waterImage.Width) newEdge = 10;

                switch (position)
                {
                    case WaterPositionOption.LeftTop:
                        x = newEdge;
                        y = newEdge;
                        break;
                    case WaterPositionOption.CenterTop:
                        x = (image.Width - waterImage.Width) / 2;
                        y = newEdge;
                        break;
                    case WaterPositionOption.RightTop:
                        x = image.Width - waterImage.Width - newEdge;
                        y = newEdge;
                        break;
                    case WaterPositionOption.LeftBottom:
                        x = newEdge;
                        y = image.Height - waterImage.Height - newEdge;
                        break;
                    case WaterPositionOption.CenterBottom:
                        x = (image.Width - waterImage.Width) / 2;
                        y = image.Height - waterImage.Height - newEdge;
                        break;
                    case WaterPositionOption.RightBottom:
                        x = image.Width - waterImage.Width - newEdge;
                        y = image.Height - waterImage.Height - newEdge;
                        break;
                    case WaterPositionOption.Middle:
                        x = (image.Width - waterImage.Width) / 2;
                        y = (image.Height - waterImage.Height) / 2;
                        break;
                    default:
                        goto case WaterPositionOption.RightBottom;
                }

                // 画水印图片
                graphics.DrawImage(waterImage, new Rectangle(x, y, waterImage.Width, waterImage.Height), 0, 0, waterImage.Width, waterImage.Height, GraphicsUnit.Pixel);

                // 关闭打开着的文件并保存(覆盖)新图片
                originalImageStream.Close();
                bitmap.Save(savePath, GetImageFormat(strFileName));

                success = true;
            }
            catch (Exception ex)
            {
                success = false;
                throw;
                //throw new Exception(ex.Message.Replace("'", " ").Replace("\n", " ").Replace("\\", "/"));
            }
            finally
            {
                if (graphics != null) graphics.Dispose();
                if (bitmap != null) bitmap.Dispose();
                if (image != null) image.Dispose();
                if (waterImage != null) waterImage.Dispose();
            }

            return success;
        }