有没有办法解决微信朋友圈上传图片质量差的问题?
安卓上传图片到朋友圈,质量明显差于苹果的,压缩太高了为什么呢?有无办法解决?
苹果朋友圈发出来的图片很清晰,到了安卓就差了这么多
这个不是微信开发人员不能解决吧 本帖最后由 shahito 于 2015-9-21 08:57 编辑
这是困扰了隔壁论坛(TGFC)Android用户的头等问题……… 记得之前的官方解释是因为安卓有很多低端用户,对流量消耗敏感,所以开发时故意为之的…说到底还是懒,加个开关给用户选择就行了。 我觉得要不要看清晰图应该是看的人决定的 然而这傻逼强行让发的人不能发清晰图.......... 能伪装成IP用户发图片吗? SilverBrady 发表于 2015-9-21 10:00
不知道从xposed框架着手能解决不 伪装一下,或者提前自已压缩
—— 来自 LGE Nexus 5, Android 5.1 ...
提前自己压缩,要压到多少?分辨率?还是大小? NounenQ 发表于 2015-9-20 23:58
一个想法不一定对,因为安卓的摄像头像素等区别太大,渣手机和旗舰拍出来差别太大,所以就往渣里压,而肾果 ...
不对,唯一解释就是微信开发人员是果粉,还是极端傻逼的那种,类似隔壁虚拟智商那种 马化腾的码农用了骨灰级的压缩算法。
反正他们家的码农也就这水平了。 hhhhhhh猴机傻逼了
——发送自S1 Pluto 相机照片压缩到900*600传到手机再发微信效果会好些
不过仍然对原片画质是毁灭性的打击
----发送自 samsung SM-N9006,Android 4.4.2 “发。原。图”! akitox 发表于 2015-9-21 13:04
“发。原。图”!
怎么发?朋友圈没有那个选项啊 就我觉得没啥区别么 之前看有人说这个是Google自己用了不好的算法? 微信背锅?
—— 来自 Sony E6533, Android 5.0.2 本帖最后由 武の炽羽 于 2015-9-21 20:01 编辑
yuaugust 发表于 2015-9-21 19:10
之前看有人说这个是Google自己用了不好的算法? 微信背锅?
—— 来自 Sony E6533, Android 5.0.2 ...
为啥发微信朋友圈会牵扯到google的算法...如果一个软件压缩图片还和安卓系统自身算法有关那样的话岂不是所有能发图的社交软件猴机都吃瘪? 进来前就想好回复了:换狗机 武の炽羽 发表于 2015-9-21 19:59
为啥发微信朋友圈会牵扯到google的算法...如果一个软件压缩图片还和安卓系统自身算法有关那样的话岂不是所 ...
为什么微信android图片质量会比iphone的差?
我们团队最初也纠结过这个问题,费了半天劲、绕了好大圈,直到最后才发现,原来这是谷歌犯得一个“小”错误,而且一直错到了今天。
谷歌的错就在于:libjpeg。
libjpeg是广泛使用的开源JPEG图像库(参考 libjpeg ),安卓也依赖libjpeg来压缩图片。通过查看源码,我们会发现安卓并不是直接封装的libjpeg,而是基于了另一个叫Skia的开源项目(Skia Graphics Engine)来作为的图像处理引擎。Skia是谷歌自己维护着的一个大而全的引擎,各种图像处理功能均在其中予以实现,并且广泛的应用于谷歌自己和其它公司的产品中(如:Chrome、Firefox、Android等)。Skia对libjpeg进行了良好的封装,基于这个引擎可以很方便为操作系统、浏览器等开发图像处理功能。
libjpeg在压缩图像时,有一个参数叫optimize_coding,关于这个参数,libjpeg.doc有如下解释:
这段话大概的意思就是如果设置optimize_coding为TRUE,将会使得压缩图像过程中基于图像数据计算哈弗曼表(关于图片压缩中的哈弗曼表,请自行查阅相关资料),由于这个计算会显著消耗空间和时间,默认值被设置为FALSE。
这段解释乍看起来没有任何问题,libjpeg的代码也经受了十多年的考验,健壮而高效。但很多人忽略了这一点,那就是,这段解释是十多年前写的,对于当时的计算设备来说,空间和时间的消耗可能是显著的,但到今天,这似乎不应再是问题,相反,我们应该更多的考虑图片的品质(越来越好的显示技术)和图片的大小(越来越依赖于云服务)。
谷歌的Skia项目工程师们最终没有设置这个参数,optimize_coding在Skia中默认的等于了FALSE,这就意味着更差的图片质量和更大的图片文件,而压缩图片过程中所耗费的时间和空间其实反而是可以忽略不计的。那么,这个参数的影响究竟会有多大呢?
经我们实测,使用相同的原始图片,分别设置optimize_coding=TRUE和FALSE进行压缩,想达到接近的图片质量(用Photoshop放大到像素级逐块对比),FALSE时的图片大小大约是TRUE时的5-10倍。换句话说,如果我们想在FALSE和TRUE时压缩成相同大小的JPEG图片,FALSE的品质将大大逊色于TRUE的(虽然品质很难量化,但我们不妨说成是差5-10倍)。
我们又对Android和iOS进行了对比(均使用标准的JPEG压缩方法),两个系统都没有提供设置optimize_coding的接口(通过阅读源码,我们已经知道Android是FALSE,iOS不详),当压缩相同的原始图片时,结果也是一样,iOS完胜。想要品质接近,文件大小就会差出5-10倍,而如果要压缩出相同大小的文件,Android的压缩品质简直就是惨不忍睹。
结果说明,苹果很清楚optimize_coding参数和哈弗曼表的意义,这里需要特别指出,苹果使用的哈弗曼表算法与libjpeg(及我们后来自行采用的libjpeg-turbo)不同,像素级可以看出区别,苹果似乎基于libjpeg又进行了进一步的优化,压缩出来的图片细节上更柔和、更平滑。
以上试验,我们尝试过多个原图、多种压缩比例,试验结果均类似,如有兴趣,您不妨也自行进行尝试。
最终我们决定,不再使用安卓系统原生的JPEG压缩方法,而是基于libjpeg-turbo自行编译了一版native的安卓库,专门用来压缩图片,这样在我们的产品中,就做到了仅仅用1/5的图片大小,就能让用户得到不逊色甚至更优的图片品质,对于我们团队来说,费了半天劲、绕了好大圈是非常值得的。(使用libjpeg-turbo还有性能上的好处,这里就不再赘述了)
知乎上看到的,不知道对不对。 bubuyu 发表于 2015-9-21 07:43
记得之前的官方解释是因为安卓有很多低端用户,对流量消耗敏感,所以开发时故意为之的…说到底还是懒,加个 ...
qq有上传高清图片的开关
如果按照官方的解释逻辑
用QQ的用户普遍比用微信的高端?
—— 来自 HUAWEI PLK-AL10, Android 5.0 likunplus 发表于 2015-9-22 00:47
qq有上传高清图片的开关
如果按照官方的解释逻辑
用QQ的用户普遍比用微信的高端?
两个团队开发的东西,而且QQ和微信在腾讯还属于两个不同的事业部,基本上是没什么关联的。 本帖最后由 烈之斩 于 2015-9-21 14:06 编辑
大象吃西瓜 发表于 2015-9-21 10:40
知乎上看到的,不知道对不对。
这篇文章基本是胡扯。霍夫曼编码是一种无损压缩的方式,很多jpeg输出软件都可以选择。然而选于不选大小差别不会超过20%,而且对图像质量本身没有任何影响(当然,由于体积的稍微减小,质量/体积比还是会稍微增加的)。这文张嘴就来同样质量大小差“5-10倍”,请问样图在哪呢?
在2015年设备如此的强劲的情况下,谷歌当然应该允许dev这个选项,这个没话说;但是这个选项不会对图像质量产生任何质的变化。
文章的出处(之一,开发者是个中国人,可能也有中文版原文)在此:https://github.com/bither/bither ... ob/master/REASON.md
在forum也有人质疑了:https://groups.google.com/forum/#!topic/skia-discuss/p0IcyBoU8P0
因为JAVA本身对图像处理的就不太行
页:
[1]