我有一个VS 2008,.NET 3.5定位的MVC.NET应用程序。我正在使用IIS开发Windows 7,但部署到安装了.NET 3.5 SP1的Windows Server 2003环境。
我们有一个图像缩放操作,可以按照请求的分辨率从数据库中返回图像,并使用System.Drawing和System.Drawing.Imaging API即时转换为PNG。
通过部署的站点提供的图像是开发中的图像的大小/质量的1/2。源图像是相同的,但通过部署的站点请求导致6.35 kb的154x200 PNG,但在开发时它会产生12.28 kb的154x200 PNG。
我怀疑Windows服务器上的3.5 SP1上的.NET图形库有什么不同?我的应用明确地针对.NET 3.5运行时。
Image image = Image.FromStream(new MemoryStream(document.content));
MemoryStream memStream = new MemoryStream();
Bitmap bmp = new Bitmap(image, (int)width, (int)height);
ImageFormat format = ImageFormat.Png;
string mimeType = document.mimeType;
if(document.mimeType == "image/png")
; // format = ImageFormat.Png;
else if (document.mimeType == "image/jpeg")
format = ImageFormat.Jpeg;
else if (document.mimeType == "image/gif")
format = ImageFormat.Gif;
else if (document.mimeType == "image/tiff")
{
format = ImageFormat.Png; // convert tiff to png
mimeType = "image/png";
}
bmp.Save(memStream, format);
HTTP标头是: 发展: 缓存控制私有 内容类型图像/ png 服务器Microsoft-IIS / 7.5 X-AspNetMvc-Version 2.0 X-AspNet-Version 2.0.50727 X-Powered-By ASP.NET 2010年3月5日星期五19:59:50 GMT 内容长度12574
生产: 2010年3月5日星期五20:02:58 GMT 服务器Microsoft-IIS / 6.0 X-Powered-By ASP.NET X-AspNet-Version 2.0.50727 X-AspNetMvc-Version 2.0 缓存控制私有 内容类型图像/ png 内容长度6514
答案 0 :(得分:3)
也许你需要设置像素格式或其他只使用默认值的选项:http://www.codeproject.com/KB/GDI-plus/imageresize.aspx
答案 1 :(得分:0)
默认值可能不同,这有点奇怪。尝试明确指定其他人所说的颜色深度。
还可以使用旋转技巧删除缩略图。 (将图像翻转180度两次..NET在旋转时剥离缩略图。)