如何使用C#以低分辨率形式提供高分辨率图像
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何使用C#以低分辨率形式提供高分辨率图像,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2219字,纯文字阅读大概需要4分钟。
内容图文
![如何使用C#以低分辨率形式提供高分辨率图像](/upload/InfoBanner/zyjiaocheng/812/21edb307cfb44aff875fa91b432c789c.jpg)
尝试使用300dpi tif图像在网络上显示.目前,当用户上传图片时,我正在动态创建缩略图.如果创建的页面引用宽度为500x500px的高分辨率图像,我是否可以使用相同的功能即时转换为gif / jpg.将要创建的jpg即将解决的是什么?
编辑:
为了进一步解释该用法,用户上传了大约3000×3000像素的300dpi图像.用户正在使用这些图像来创建将用于pdf打印的目录页面.当他们创建页面时,我们只需要72dpi图像显示在屏幕上,但是对于打印,需要300dpi图像.显然,他们不想在页面上添加3000x3000px图像,因此需要将其调整到正确的查看区域,例如500x500px等
解决方法:
这归结为简单的图像大小调整. DPI的讨论只是计算比例因子的辅助数据.
正如@Guffa所说,您应该在上传时执行此操作,这样您就可以在查看器中提供静态图像.
这将是服务器上的负载:
>加载完整图像.对于3000×3000图像,这将是大约27 MB的内存.
>调整大小.很多数学懒散(仍然是CPU密集型).
>压缩.更多CPU写入驱动器的成本.
由于您已经花时间生成缩略图,因此您无需重复上述步骤1即可分摊该成本和此成本(请参阅代码).
图像上传后,我会建议旋转一个线程来完成这项工作.这肯定是Web服务器上的一个负载,但是你唯一的选择就是投入第二台机器来完成工作.它最终必须完成.
这是一些代码来完成这项工作.重要的是这些:
OutputAsJpeg(Resize(big, 300.0, 72.0), new FileStream("ScreenView.jpg"));
OutputAsJpeg(Resize(big, bigSize, 64.0), new FileStream("Thumbnail.jpg"));
我们可以根据需要调整大图像的大小.在第一行中,我们只是按固定比例(72.0 / 300.0)缩小它.在第二行,我们强制图像的最终最大尺寸为64(比例因子= 64.0 / 3000.0).
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.IO;
BitmapSource Resize(BitmapSource original,
double originalScale,
double newScale) {
double s = newScale / originalScale;
return new TransformedBitmap(original, new ScaleTransform(s, s));
}
void OutputAsJpeg(BitmapSource src, Stream out) {
var encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(src));
encoder.Save(out);
}
// Load up your bitmap from the file system or whatever,
// then dump it out to a smaller version and a thumbnail.
// Assumes thumbnails have a max dimension of 64
BitmapSource big = new BitmapImage(new Uri("BigPage0.png",
UriKind. RelativeOrAbsolute));
double bigSize = Math.Max(big.PixelWidth, big.PixelHeight);
OutputAsJpeg(Resize(big, 300.0, 72.0), new FileStream("ScreenView.jpg"));
OutputAsJpeg(Resize(big, bigSize, 64.0), new FileStream("Thumbnail.jpg"));
内容总结
以上是互联网集市为您收集整理的如何使用C#以低分辨率形式提供高分辨率图像全部内容,希望文章能够帮你解决如何使用C#以低分辨率形式提供高分辨率图像所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。