System.Drawing.Image在Save之后Type变了
前段时间发现asp.net MVC 3附带了一个相当方便的图片处理类WebImage,常用的图片处理功能全都包括进去了,用起来是相当的爽。
在项目中刚好有相关的图片处理需求,但由于实际项目是使用asp.net 2.0 webform的,只能把WebImage中图片处理的一部分提取出来。使用了一段时间都比较正常,最近发现在把图片进行“调整大小”、“水印”等处理之后,图片的Type都变成PNG了。
检查了一下,貌似有点关键代码刚好漏掉了,也不想完全照搬WebImage的处理方式,所以在保存文件的时候重新设置了一下ImageCodecInfo。
private static ImageCodecInfo GetImageEncoder(string imageType){ imageType = imageType.ToUpperInvariant(); foreach (ImageCodecInfo info in ImageCodecInfo.GetImageEncoders()) { if (info.FormatDescription == imageType) { return info; } } return null;} |
以上代码用于获取具体图片类型的ImageCodecInfo,如BMP, JPEG, GIF, TIFF, PNG。
在保存的时候调用如下:
using (EncoderParameters parms = new EncoderParameters(1)){ parms.Param[0] = new EncoderParameter(Encoder.Compression, 40); img.Save(file, GetImageEncoder(“JPEG”), parms);} |
以上代码对图片进行压缩,再保存为JPEG编码格式,可以根据实际需要进行调整。
额,发现WebImage这些工具类虽然很好用,但是也容易使人变懒,不过研究一下它们的实现倒是很好的学习方式。
System.Drawing.Image在Save之后Type变了的更多相关文章
- debian The type initializer for 'System.Drawing.KnownColors' threw an exception
Change the "System.Drawing" reference of "CoreCompat.System.Drawing"if you thro ...
- System.Drawing.Image.Save(Savepath),保存为jpg格式,参数错误,文件0kb解决办法
问题场景:asp.net给图片添加文字水印保存为jpg格式时出现标题所描述错误(图片为.jpg格式): 简单验证:用本机的画图程序打开,然后保存为jpg格式会出现警告框"画图程序不能存储该文 ...
- System.Drawing Linux Centos7 The type initializer for 'Gdip' threw an exception
System.Drawing 在linux使用时提示异常 The type initializer for 'Gdip' threw an exception 解决方案: yum install au ...
- Asp.Net Core使用System.Drawing.Common部署到docker报错问题
Asp.Net Core 2.1发布后,正式支持System.Drawing.Common绘图了,可以用来做一些图片验证码之类的功能.但是把网站部署到docker容器里运行会遇到很多问题,也是非常闹心 ...
- .Net Core 之 图形验证码 本文介绍.Net Core下用第三方ZKWeb.System.Drawing实现验证码功能。
本文介绍.Net Core下用第三方ZKWeb.System.Drawing实现验证码功能. 通过测试的系统: Windows 8.1 64bit Ubuntu Server 16.04 LTS 64 ...
- 使用System.Drawing.Imaging.dll进行图片的合并
在最近开发项目的时候有时候需要进行图片的合并,即将两张图片合并成功一张图片 合并图片的代码: #region 两张图片的合并 /// <summary > /// 将Image对象转化成二 ...
- .net学习笔记----利用System.Drawing.Image类进行图片相关操作
C#中对图片的操作主要是通过System.Drawing.Image等类进行. 一.将图片转换为字节流 /// <summary> /// 图片处理帮助类 /// </summary ...
- 类库探源——System.Drawing.Bitmap
一.System.Drawing.Bitmap Bitmap 类: 封装GDI+ 位图,此位图由图形图像及其属性的像素数据组成.Bitmap 是用于处理由像素定义的图像的对象 命名空间: System ...
- 类库探源——System.Drawing
一.System.Drawing 命名空间简述 System.Drawing 命名空间提供访问 GDI+ 的基本功能,更高级的功能在 System.Drawing.Drawing2D,System.D ...
随机推荐
- 【C#】让ReSharper灰色显示未使用的非私有成员的关键
环境:VS2010+ReSharper8 先说答案: 1.在Inspection Severity中设置Non-private accessibility为Warning.如图: 该页面在ReShar ...
- WCF在编译出现 “错误 3 命令“时解决
如果你遇到了下面问题解决方案很简单,以管理员身份运行VS就OK了. 错误 3 命令“ mkdir %SystemDrive%\inetpub\wwwroot\servicemodelsamples m ...
- Eclipse设置风格
如果觉得Eclipse的颜色太刺眼,可以修改背景与字体颜色,方法如下: (1)到http://eclipsecolorthemes.org/下载主题文件,可以选择xml文件或者epf文件: (2)Ec ...
- iOS6.0下获取通讯录用户列表
自iOS6.0后获取通讯录列表需要询问用户,经过用户同意后才可以获取通讯录用户列表.而且ABAddressBookRef的初始化工作也由ABAddressBookCreate函数转变为ABAddres ...
- 2016暑假多校联合---Counting Intersections
原题链接 Problem Description Given some segments which are paralleled to the coordinate axis. You need t ...
- Spring发展历程总结
目前很多公司的架构,从Struts2迁移到了SpringMVC.你有想过为什么不使用Servlet+JSP来构建Java web项目,而是采用SpringMVC呢? 既然这样,我们从源头说起.Stru ...
- web项目 验证码 *** 最爱那水货
1. jsp代码 : <Script> function changeImg(){ document.getElementById("certImg").src =&q ...
- php函数的传值如果需要引用传递注意的细节
Strict standards: Only variables should be passed by reference 网上查到资料有这么一句话: 在php5.3以上版本会出这个问题,应该也和p ...
- Tsql查询执行顺序(二)
来源:http://www.cnblogs.com/gaiyang/archive/2011/04/13/2014356.html T-SQL查询处理这种逻辑处理顺序,是理论上的处理过程,实际情况还会 ...
- knockout源码分析之computed(依赖属性)
一.序列图 二.主要代码文件 1.dependentObservable.js:主要包含ko.computed相关方法的处理2.dependencyDetection.js:主要包含依赖的监控上下文对 ...