Exemplo n.º 1
0
        private void BlendImageGdi(Bitmap srcImg1, Bitmap srcImg2, ImageSpliceSort eSort, out Bitmap destImg)
        {
            if (eSort == ImageSpliceSort.Vertical)
            {
                destImg = new Bitmap(srcImg1.Width, srcImg1.Height + srcImg2.Height, PixelFormat.Format32bppArgb);
                Graphics G = Graphics.FromImage(destImg);

                G.DrawImage(srcImg1, new Rectangle(0, 0, srcImg1.Width, srcImg1.Height), new Rectangle(0, 0, srcImg1.Width, srcImg1.Height), GraphicsUnit.Pixel);
                G.DrawImage(srcImg2, new Rectangle(0, srcImg1.Height, srcImg2.Width, srcImg2.Height), new Rectangle(0, 0, srcImg2.Width, srcImg2.Height), GraphicsUnit.Pixel);

                G.Dispose();
            }
            else if (eSort == ImageSpliceSort.Horizontal)
            {
                destImg = new Bitmap(srcImg1.Width + srcImg2.Width, srcImg1.Height, PixelFormat.Format32bppArgb);
                Graphics G = Graphics.FromImage(destImg);

                G.DrawImage(srcImg1, new Rectangle(0, 0, srcImg1.Width, srcImg1.Height), new Rectangle(0, 0, srcImg1.Width, srcImg1.Height), GraphicsUnit.Pixel);
                G.DrawImage(srcImg2, new Rectangle(srcImg1.Width, 0, srcImg2.Width, srcImg2.Height), new Rectangle(0, 0, srcImg2.Width, srcImg2.Height), GraphicsUnit.Pixel);

                G.Dispose();
            }
            else
            {
                destImg = new Bitmap(srcImg1.Width, srcImg1.Height, PixelFormat.Format32bppArgb);
                Graphics G = Graphics.FromImage(destImg);

                G.DrawImage(srcImg1, new Rectangle(0, 0, srcImg1.Width, srcImg1.Height), new Rectangle(0, 0, srcImg1.Width, srcImg1.Height), GraphicsUnit.Pixel);
                G.DrawImage(srcImg2, new Rectangle(0, 0, srcImg2.Width, srcImg2.Height), new Rectangle(0, 0, srcImg2.Width, srcImg2.Height), GraphicsUnit.Pixel);
                G.Dispose();
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 图片数据叠加
        /// </summary>
        public void CmdImage(Bitmap srcimg, Bitmap srcimg2, string outputpath)
        {
            ImageSpliceSort eSort   = ImageSpliceSort.Vertical;
            Bitmap          destImg = null;

            BlendImageGdi(srcimg, srcimg2, eSort, out destImg);

            if (destImg != null)
            {
                destImg.Save(outputpath, ImageFormat.Jpeg);
                destImg.Dispose();
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 图片数据叠加-文件加载
        /// </summary>
        public void CmdImage(string srcimgPath, string descimgpath, string outputpath)
        {
            var srcimg1 = new Bitmap(srcimgPath);
            var srcimg2 = new Bitmap(descimgpath);

            ImageSpliceSort eSort   = ImageSpliceSort.Vertical;
            Bitmap          destImg = null;

            BlendImageGdi(srcimg1, srcimg2, eSort, out destImg);

            if (destImg != null)
            {
                destImg.Save(outputpath, ImageFormat.Jpeg);
                destImg.Dispose();
            }

            srcimg1.Dispose();
            srcimg2.Dispose();
        }
Exemplo n.º 4
0
        /// <summary>
        /// 图片数据截取并叠加
        /// </summary>
        private void TestBlendImageCode3()
        {
            string    srcimgPath = AppDomain.CurrentDomain.BaseDirectory + "14140889701(1139,919,507,439).jpg";
            var       srcimg1    = new Bitmap(srcimgPath);
            Bitmap    srcimg2    = null;
            Rectangle cropRect   = new Rectangle(1139, 919, 507, 439);

            CropImage(srcimg1, cropRect, out srcimg2);

            ImageSpliceSort eSort   = ImageSpliceSort.Vertical;
            Bitmap          destImg = null;

            BlendImageGdi(srcimg1, srcimg2, eSort, out destImg);

            destImg.Save(AppDomain.CurrentDomain.BaseDirectory + "14140889701.jpg", ImageFormat.Jpeg);
            destImg.Dispose();

            srcimg1.Dispose();
            srcimg2.Dispose();
        }
Exemplo n.º 5
0
        /// <summary>
        /// 图片数据叠加
        /// </summary>
        private void TestBlendImageCode()
        {
            var srcimg1 = new Bitmap(AppDomain.CurrentDomain.BaseDirectory + "2016-01-12-15h.png");
            var srcimg2 = new Bitmap(AppDomain.CurrentDomain.BaseDirectory + "49.jpg");

            ImageSpliceSort eSort   = ImageSpliceSort.Vertical;
            Bitmap          destImg = null;

            BlendImageGdi(srcimg1, srcimg2, eSort, out destImg);

            destImg.Save(AppDomain.CurrentDomain.BaseDirectory + "49_2.jpg", ImageFormat.Jpeg);
            destImg.Dispose();

            eSort = ImageSpliceSort.Horizontal;
            Bitmap destImg2 = null;

            BlendImageGdi(srcimg1, srcimg2, eSort, out destImg2);

            destImg2.Save(AppDomain.CurrentDomain.BaseDirectory + "49_3.jpg", ImageFormat.Jpeg);
            destImg2.Dispose();

            srcimg1.Dispose();
            srcimg2.Dispose();
        }
Exemplo n.º 6
0
        /// <summary>
        /// 图片数据叠加
        /// </summary>
        public bool CmdImage(Bitmap srcimg, Rectangle cropRect, string outputpath, out string errorMsg, int iOver = 0)
        {
            try
            {
                errorMsg = null;
                if (srcimg.Width < cropRect.X + cropRect.Width)
                {
                    errorMsg = "截图区域宽度不符合要求:" + srcimg.Width.ToString() + "-" + (cropRect.X + cropRect.Width).ToString();
                    return(false);
                }
                if (srcimg.Height < cropRect.Y + cropRect.Height)
                {
                    errorMsg = "截图区域高度不符合要求:" + srcimg.Height.ToString() + "-" + (cropRect.Y + cropRect.Height).ToString();
                    return(false);
                }

                Bitmap srcimg2 = null;
                CropImage(srcimg, cropRect, out srcimg2);
                if ((srcimg2 == null) || (srcimg2.Width < 5) || (srcimg2.Height < 5))
                {
                    errorMsg = "截图区域小于5个像素";
                    if (srcimg2 != null)
                    {
                        srcimg2.Dispose();
                    }
                    return(false);
                }

                // 放大或缩小
                int       zoom     = 2;
                Rectangle zoomRect = new Rectangle();
                zoomRect.X = cropRect.X - (int)(cropRect.Width * 1.0F / zoom);
                zoomRect.Y = cropRect.Y - (int)(cropRect.Height * 1.0F / zoom);

                if (zoomRect.X < 0)
                {
                    zoomRect.X = 0;
                }
                if (zoomRect.Y < 0)
                {
                    zoomRect.Y = 0;
                }

                var srcimg3 = new Bitmap(srcimg2, srcimg2.Width * zoom, srcimg2.Height * zoom);
                zoomRect.Width  = cropRect.Width * 2;
                zoomRect.Height = cropRect.Height * 2;

                Bitmap destImg = null;
                if (iOver == 0)
                {
                    Rectangle selRect = SelectRectangle(srcimg, cropRect, zoomRect);
                    if ((selRect.Width > 0 && selRect.Height > 0))
                    {
                        BlendImageGdi(srcimg, srcimg3, selRect, out destImg);
                    }
                    else
                    {
                        errorMsg = "截图区域无法叠加";
                        srcimg2.Dispose();
                        srcimg3.Dispose();
                        return(false);
                    }
                }
                else
                {
                    ImageSpliceSort eSort = ImageSpliceSort.Default;
                    if (iOver == 1)
                    {
                        eSort = ImageSpliceSort.Vertical;
                        BlendImageGdi(srcimg3, srcimg, eSort, out destImg);
                    }
                    else if (iOver == 3)
                    {
                        eSort = ImageSpliceSort.Vertical;
                        BlendImageGdi(srcimg, srcimg3, eSort, out destImg);
                    }
                    else if (iOver == 2)
                    {
                        eSort = ImageSpliceSort.Horizontal;
                        BlendImageGdi(srcimg3, srcimg, eSort, out destImg);
                    }
                    else
                    {
                        eSort = ImageSpliceSort.Horizontal;
                        BlendImageGdi(srcimg, srcimg3, eSort, out destImg);
                    }
                }

                if (destImg != null)
                {
                    destImg.Save(outputpath, ImageFormat.Jpeg);
                    destImg.Dispose();

                    srcimg2.Dispose();
                    srcimg3.Dispose();
                    return(true);
                }
                errorMsg = "截图对象为空";
                srcimg2.Dispose();
                srcimg3.Dispose();
                return(false);
            }
            catch (Exception ex)
            {
                errorMsg = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message;
                return(false);
            }
        }