博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 图片处理(压缩、剪裁,转换,优化)
阅读量:7225 次
发布时间:2019-06-29

本文共 1328 字,大约阅读时间需要 4 分钟。

1.图片与二进制的转换

图片转换成二进制主要用于数据库存储及图片数据的应用间传输,如网站服务器通过WebService或WCF从数据处理服务器获取图片数据,就可以以二进制形式传输

///图片转二进制private byte[] convertByte(Image img){    MemoryStream ms = new MemoryStream();    img.Save(ms, img.RawFormat);    //byte[] bytes = new byte[ms.Length];    //ms.Read(bytes, 0, Convert.ToInt32(ms.Length));    //以上两句改成下面两句    byte[] bytes = ms.ToArray();    ms.Close();    return bytes;}///二进制生成图片private Image convertImg(byte[] datas){    MemoryStream ms = new MemoryStream(datas);    Image img = Image.FromStream(ms, true);    ms.Close();    return img;}

 


2.两种图片加载方式的比较

平常我们一般是这样获取图片的(即以静态文件的方式获取)

 

有一种图片加载方式是将内存中的图片数据输出到页面,如下

页面标签

后台代码 GetImageHandler.ashx.cs

byte[] file = GetImgData(imgID);//根据图片信息获取图片数据(一般是从服务获取)Response.ContentType = "image/*";Response.BinaryWrite(file);

 或者

Image ci = GetImage(imgID);context.Response.Clear();context.Response.ContentType = "image/jpeg";ci.Image.Save(context.Response.OutputStream, ImageFormat.Jpeg); ci.Dispose();

 

通过ashx获取与直接获取比较 有以下优缺点

  • 优点:便于管理。因为这种方式需要先经过后台处理才返回内容,在后台就可以进行很多操作了,例如判断当前人的权限是否可加载该图片(根据session);判断当前图片如果不存在的话,返回默认图片;在后台给图片加水印。
  • 缺点1:加载速度慢,效率低。毕竟中间多了一个处理的过程,如果网站流量小,对图片加载速度和网站压力没要求倒无所谓了。。。
  • 缺点2:用户体验差。因为这种方式是先在后台获取到图片的完整数据,然后再拉取到页面。

 

下面分别是两种方式的请求耗时图。(图①是内存方式,图②是普通方式)

 这种加载方式  页面上最直观的效果就是,在第一秒内图片是空白的,然后突然完全显示出来。而普通方式则是由上往下慢慢显示出来


 

 

转载于:https://www.cnblogs.com/TiestoRay/p/3347047.html

你可能感兴趣的文章
iframe和DataForm
查看>>
CQOI2019(十二省联考)游记
查看>>
【总结整理】需求分析所需掌握技能(转)
查看>>
我的软件之路
查看>>
EL表达式
查看>>
日期(date)运用座谈会
查看>>
能率燃气热水器售后好差啊!
查看>>
python常见问题
查看>>
图论精炼500题
查看>>
ubuntu误删home目录
查看>>
python3爬虫-爬取B站排行榜信息
查看>>
svn搬移到gitlab及使用
查看>>
UI组件-UIButton
查看>>
iOS架构模式-MVVM
查看>>
Englis - 英文字母和音标
查看>>
js 语法
查看>>
新篇章的开始
查看>>
如何更方便的查看Linux内核代码的更新记录【转】
查看>>
(十二)struts2的类型转换
查看>>
接口和抽象类
查看>>