zoukankan      html  css  js  c++  java
  • 根据左上角坐标、长、高,实现截图

            /// <summary>
            /// 根据左上角坐标、长、高,实现截图
            /// </summary>
            /// <param name="vehicleImage">图片二进制流</param>
            /// <param name="image1Url">图片路径</param>
            /// <param name="vehicleRegionLeft">左上角X轴坐标</param>
            /// <param name="vehicleRegionTop">左上角Y轴坐标</param>
            /// <param name="vehicleRegionWidth">宽度</param>
            /// <param name="vehicleRegionHeight">高度</param>
            /// <returns></returns>
            public ActionResult GetVehicleImageByRegion(string vehicleImage, string image1Url, 
                int vehicleRegionLeft, int vehicleRegionTop, int vehicleRegionWidth, int vehicleRegionHeight)
            {
                if (!string.IsNullOrEmpty(vehicleImage) && FileHelper.Exists(vehicleImage))
                {
                    byte[] buffer = FileHelper.ReadAllBytes(vehicleImage);
                    return File(buffer, "image/jpeg");
                }
                else if (!string.IsNullOrEmpty(image1Url))
                {
                    Bitmap image1Bitmap = null;
                    Bitmap newBit = null;
    
                    if (image1Url.ToLower().Contains("http")) //http路由
                    {
                        WebRequest request = WebRequest.Create(image1Url);
                        WebResponse response = request.GetResponse();
    
                        if(response == null)
                            return File(new byte[0], "image/jpeg");
    
                        Stream stream = response.GetResponseStream();
                        image1Bitmap = (Bitmap)Image.FromStream(stream);
                    }
    
                    else //ftp路径
                    {
                        if (!FileHelper.Exists(image1Url))
                            return File(new byte[0], "image/jpeg");
    
                        image1Bitmap = (Bitmap)Image.FromFile(image1Url);
                    }
    
                    try
                    {
                        newBit = new Bitmap(vehicleRegionWidth, vehicleRegionHeight);
    
                        using (Graphics g = Graphics.FromImage(newBit))  //实现截图
                        {
                            g.DrawImage(image1Bitmap,
                                new Rectangle(0, 0, newBit.Width, newBit.Height),
                                new Rectangle(vehicleRegionLeft, vehicleRegionTop,
                                    newBit.Width, newBit.Height),
                                GraphicsUnit.Pixel);
    
                            using (MemoryStream ms = new MemoryStream())
                            {
                                newBit.Save(ms, ImageFormat.Jpeg);  //保存图片
                                return File(ms.ToArray(), "image/jpeg");
                            }
                        }
                    }
                    finally
                    {
                        if (image1Bitmap != null)
                            image1Bitmap.Dispose();
    
                        if (newBit != null)
                            newBit.Dispose();
                    }
                }
    
    
                return File(new byte[0], "image/jpeg");
            }
  • 相关阅读:
    容斥原理算法总结(bzoj 2986 2839)
    网络流系列算法总结(bzoj 3438 1061)
    bzoj 2746: [HEOI2012]旅行问题 AC自动机fail树
    bzoj 3283: 运算器 扩展Baby Step Giant Step && 快速阶乘
    计算几何考场绘图技巧
    bzoj 1845: [Cqoi2005] 三角形面积并 扫描线
    bzoj 3784: 树上的路径 堆维护第k大
    BZOJ 1231: [Usaco2008 Nov]mixup2 混乱的奶牛
    BZOJ 1112: [POI2008]砖块Klo
    BZOJ 1003: [ZJOI2006]物流运输trans DP+最短路
  • 原文地址:https://www.cnblogs.com/zhengwk/p/5530602.html
Copyright © 2011-2022 走看看