c# – 这是否可以压缩带有zip库的JPEG文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 这是否可以压缩带有zip库的JPEG文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2261字,纯文字阅读大概需要4分钟。
内容图文
据我所知,jpeg文件在其他图像扩展之间具有最佳压缩比,如果我更正,我们无法再压缩jpeg文件,因为它具有最佳压缩,所以请帮助我.我创建了一些jpegs如下:
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
ImageCodecInfo ici = null;
foreach(ImageCodecInfo codec in codecs) {
if(codec.MimeType == "image/jpeg")
ici = codec;
}
EncoderParameters ep = new EncoderParameters();
ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, _quality);
using(MemoryStream ms = new MemoryStream()) {
Bitmap capture = GetImage();
capture.Save(ms, ici, ep);
}
我用sharpziplib压缩它们,平均每个jpeg大小为130KB,压缩后每个文件压缩到大约70KB,怎么可能?只有2个答案,我可以想象.
1-我们可以通过zip库以更高的压缩比压缩Jpeg文件
2-我的jpeg文件没有正确创建,我们可以创建更好的jpeg(压缩率更高,因为我们无法用zip库压缩它们)
有人知道吗?如果我们能创造更好的jpegs,请帮助我.
编辑:
这是压缩jpegs的邮政编码:
void addnewentry(MemoryStream stream, string pass,
string ZipFilePath, string entryname){
ICSharpCode.SharpZipLib.Zip.ZipFile zf = new ZipFile(ZipFilePath);
if(!String.IsNullOrEmpty(pass))
zf.Password = pass;
StaticDataSource sds = new StaticDataSource(Stream);
zf.BeginUpdate();
zf.Add(sds, entryName);
zf.CommitUpdate();
zf.IsStreamOwner = true;
zf.Close();
}
public class StaticDataSource : IStaticDataSource {
public Stream stream { get; set; }
public StaticDataSource() {
this.stream.Position = 0;
}
public StaticDataSource(Stream stream) {
this.stream = stream;
this.stream.Position = 0;
}
public Stream GetSource() {
this.stream.Position = 0;
return stream;
}
}
解决方法:
正如大多数人已经说过的那样,您无法轻松压缩这些已经压缩的文件.有些人在JPEG重新压缩方面努力工作(重新压缩=部分解码已经压缩的文件,然后使用自定义更强的模型和熵编码器压缩这些数据.重新压缩通常可以确保比特相同的结果).即使是那种先进的再压缩技术,我也只看到了最多25%的改进. PackJPG是他们中的一员.你可以看看其他压缩机here.正如你所知,即使顶级压缩机也无法达到25%(即使它非常复杂).
考虑到这些事实,ZIP(实际上是deflate)不能提高压缩程度(如果你将它与十大压缩机进行比较,这是一个非常古老和低效的方法).我相信这个问题有两个可能的原因:
>您不小心向JPEG流添加了一些额外的数据(可能在JPEG流之后添加).
> .NET将大量冗余数据输出到JFIF文件.也许一些大的EXIF数据等.
要解决此问题,您可以使用JFIF转储工具来观察JFIF容器中的内容.此外,您可能想要使用PackJPG尝试JPEG文件.
内容总结
以上是互联网集市为您收集整理的c# – 这是否可以压缩带有zip库的JPEG文件全部内容,希望文章能够帮你解决c# – 这是否可以压缩带有zip库的JPEG文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。