Bon*_*Kun 5 c# asp.net bytearray
我有一个包含jpeg图像的字节数组.我只是想知道是否可以减小它的尺寸?
编辑:好的.我承认我的错误.然后我的问题是如何降低图像质量来自字节数组.
Mar*_*age 14
请理解,没有免费的午餐.通过增加压缩来减小JPEG图像的大小也会降低图像的质量.但是,也就是说,您可以使用Image该类减小JPEG图像的大小.此代码假定inputBytes包含原始图像.
var jpegQuality = 50;
Image image;
using (var inputStream = new MemoryStream(inputBytes)) {
image = Image.FromStream(inputStream);
var jpegEncoder = ImageCodecInfo.GetImageDecoders()
.First(c => c.FormatID == ImageFormat.Jpeg.Guid);
var encoderParameters = new EncoderParameters(1);
encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, jpegQuality);
Byte[] outputBytes;
using (var outputStream = new MemoryStream()) {
image.Save(outputStream, jpegEncoder, encoderParameters);
outputBytes = outputStream.ToArray();
}
}
Run Code Online (Sandbox Code Playgroud)
现在outputBytes包含使用不同JPEG质量的图像的重新压缩版本.
通过减小jpegQuality(应该在0-100范围内),您可以以降低图像质量为代价来增加压缩.有关Encoder.Quality更多信息,请参阅该字段.
这是一个示例,您可以看到如何jpegQuality影响图像质量.这是使用20,50和80压缩的相同照片jpegQuality.尺寸分别为4.99,8.28和12.9 KB.
注意即使质量很高,文本也会变得"污迹化".这就是为什么你应该避免将JPEG用于具有均匀彩色区域的图像(在计算机上创建的图像/图表/图表).请改用PNG.对于照片,如果不降低质量,JPEG非常适合.
| 归档时间: |
|
| 查看次数: |
6895 次 |
| 最近记录: |