加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 需要一些能够创建缩略图的精简库/代码,并且最适合与ASP.NE

发布时间:2020-12-16 01:48:34 所属栏目:百科 来源:网络整理
导读:下面是从数据库中返回图像的动作方法,我需要一些精简库或自己编写代码,如果短,将根据我的要求调整和压缩这些图像“制作缩略图”,然后再传递给HTTP响应. 编辑:实际上想到它,也许最好将缩略图保存在附加列中,所以现在我需要一种方法来压缩和调整图像大小,然后
下面是从数据库中返回图像的动作方法,我需要一些精简库或自己编写代码,如果短,将根据我的要求调整和压缩这些图像“制作缩略图”,然后再传递给HTTP响应.

编辑:实际上想到它,也许最好将缩略图保存在附加列中,所以现在我需要一种方法来压缩和调整图像大小,然后将它们保存到数据库很长时间,保存一个未受影响的副本.最初通过在HttpPostedFileBase中传递图像来保存图像,现在需要一些在保存到数据库之前调整大小和压缩的工具.

public FileContentResult GetImage(int LineID)
{
    var PMedia = repository.ProductMedias.FirstOrDefault(x => x.LineID == LineID);

    if (PMedia != null)
    {
        return File(PMedia.ImageData,PMedia.ImageMimeType,PMedia.FileName);
    }
    else
    {
        return null;
    }
}

解决方法

这是我用来制作缩略图的例程:

public void MakeThumbnail(string imagePath)
    {
        // Image exists?
        if (string.IsNullOrEmpty(imagePath)) throw new FileNotFoundException("Image does not exist at " + imagePath);

        // Default values
        string Filename = imagePath.ToLower().Replace(".jpg","_thumb.jpg");
        int Width = 100; // 180;
        int Height = 75; // 135;
        bool lSaved = false;

        // Load image
        Bitmap bitmap = new Bitmap(imagePath);

        // If image is smaller than just save
        try
        {
            if (bitmap.Width <= Width && bitmap.Height <= Height)
            {
                bitmap.Save(Filename,ImageFormat.Jpeg);
                lSaved = true;
            }
        }
        catch (Exception e)
        {
            throw new Exception(e.Message);
        }
        finally
        {
            bitmap.Dispose();
        }

        if (!lSaved)
        {
            Bitmap FinalBitmap = null;
            // Making Thumb
            try
            {
                bitmap = new Bitmap(imagePath);

                int BitmapNewWidth;
                decimal Ratio;
                int BitmapNewHeight;

                // Change size of image
                Ratio = (decimal)Width / Height;
                BitmapNewWidth = Width;
                BitmapNewHeight = Height;

                // Image processing
                FinalBitmap = new Bitmap(BitmapNewWidth,BitmapNewHeight);
                Graphics graphics = Graphics.FromImage(FinalBitmap);
                graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
                graphics.FillRectangle(Brushes.White,BitmapNewWidth,BitmapNewHeight);
                graphics.DrawImage(bitmap,BitmapNewHeight);

                // Save modified image
                FinalBitmap.Save(Filename,ImageFormat.Jpeg);

            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
            finally
            {
                if (FinalBitmap != null) FinalBitmap.Dispose();
            }
        }
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读