我们已经为ImageResizer实现了基本服务器,但我们还有一个要求。我们正在处理用户上传的图片。有时用户想要上传5MB,10MB甚至30MB的图像(有些来自监控录像,这是预期的)。但是,当超过某个阈值时,我们不希望存储完整的图像大小。我不是影像专家 - 也许我们应该使用客户端ImageResizer API并设置dpi或maxwidth / maxheight?缩小图像尺寸的最佳做法是什么?
如果超过某个指定的大小,请查看FileContentLength并执行?maxwidth = 1000& maxheight = 1000?
查看图像的宽度/高度并相应缩小?目前,ImageResizer无法“获取”图像尺寸。
我看过this帖子,但我们不想在缩略图(150x150)图片上这样做。
答案 0 :(得分:1)
您是否关心文件大小或类型/分辨率?如果是前者,只需做
if (post.FileContentLength > MAX_SIZE){
//Use ImageResizer
}else{
//store as-is
}
否则,请始终使用ImageResizer并指定&maxwidth=3200&maxheight=3200
。
如果您担心存储或带宽,那么文件大小可能就足够了。
将文件保留为原样的缺点:元数据将被保留,损坏或非网络友好的图像格式将保持对网络不友好。非常高分辨率的图像有时会压缩到非常小的文件大小;没有线性关联,所以如果您的消费者(如移动设备)在高像素图像上崩溃,那么您可能会遇到问题。
按原样保留文件的大小:用户可能已经优化了他们的图像,因此您不会让它“变得更糟”。将保留元数据(如果这是一件好事)。
通常我们建议仅在文件大小原因的情况下修改上传图像,然后使用ImageResizer URL API和Slimmage.js重新压缩所有图像,以确保客户获得适当的图像设备