为了账号安全,请及时绑定邮箱和手机立即绑定

Reset Image Size

标签:
SQL Server

以前图片上传至数据库与显示时,需要把图片的宽度与高度读出来存在数据库表中,前些天做一个相册,发现从前的做法不太理想,改变做法是在读取图片时,再做尺寸调整。代码前三行,说明如何从数据流转为图片的方法。代码片断如下,请参考:

View Code byte[] buffer = (byte[])dataRow["Picture"];    //从数据库取到的图片数据
        MemoryStream s = new MemoryStream(buffer, 0, buffer.Length);  //转换为数据流
        Bitmap photo = new Bitmap(s);

        int _thumbnailSize = 160; //定义显示图片尺寸
        int width, height;  //定义图片宽度和高度

        //如果原图片的宽度与高度都小于定义显示图片尺寸
        if (photo.Width < _thumbnailSize && photo.Height < _thumbnailSize)
        {
            width = photo.Width;  //宽度等于原宽度
            height = photo.Height;//高度等于原高度
        }
        //如果原图片宽度大于原图片的高度              
        else if (photo.Width > photo.Height)
        {
            width = _thumbnailSize;  //宽度等于定义图片尺寸
            height = photo.Height * _thumbnailSize / photo.Width;  //高度做相应比例缩小
        }
        //如果原图片高度大于原图片的宽度
        else
        {
            width = photo.Width * _thumbnailSize / photo.Height; //宽度做相应比例缩小
            height = _thumbnailSize; //高度等于定义图片尺寸
        }

        Bitmap target = new Bitmap(width, height);
        
        using (Graphics graphics = Graphics.FromImage(target))
        {
            graphics.CompositingQuality = CompositingQuality.HighSpeed;
            graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
            graphics.CompositingMode = CompositingMode.SourceCopy;
            graphics.DrawImage(photo, 0, 0, width, height);

            using (MemoryStream memoryStream = new MemoryStream())
            {
                target.Save(memoryStream, ImageFormat.Png);
                memoryStream.WriteTo(context.Response.OutputStream);
            }
        }

 

 

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消