xiebruce / PicUploader

一个还不错的图床工具,支持Mac/Win/Linux服务器、支持压缩后上传、添加图片或文字水印、多文件同时上传、同时上传到多个云、右击任意文件上传、快捷键上传剪贴板截图、Web版上传、支持作为Mweb/Typora发布图片接口、作为PicGo/ShareX/uPic等的自定义图床,支持在服务器上部署作为图床接口,支持上传任意格式文件。
https://www.xiebruce.top/17.html
MIT License
1.19k stars 169 forks source link

PNG图片设置压缩后文件大小变大很多(约10倍) #34

Open ncepuwanghui opened 4 years ago

ncepuwanghui commented 4 years ago

原文件大小: image

上传后的文件大小: image

压缩参数配置: image

请求头: image

这个问题看起来和issue #7 有点像

xiebruce commented 4 years ago

这个问题,你具体是怎么传的?是拖放或选择图片文件上传,还是截图后直接粘贴的?

xiebruce commented 4 years ago

另外你试试把压缩等级调到9,看看还会这样吗?这个压缩是用zlib库压缩的,具体我也不太清楚,你有兴趣可以去看看zlib的9个等级,我建议是用9试试。

ncepuwanghui commented 4 years ago

PNG图片我是选择图片文件上传的。

@xiebruce 今天一直无法上传,Cloudinary无法上传,我切换到阿里云OSS测试也不行,我注释掉error_reporting(0);后看到有如下错误信息: image

域名解析正常, image 1578650280827

我对照https://curl.haxx.se/libcurl/c/libcurl-errors.html看了下错误码,如下: image image

xiebruce commented 4 years ago

我试了一下,这两个我这边都是正常的,如果你有代理,可以给cloudinary加个代理试试。

至于阿里云,报的是AWS的错,可能是因为我用了兼容S3的接口吧(因为非兼容s3的接口老出问题),这个,我也不知道怎么解决,感觉应该不是代码的问题,因为我这边上传也没问题,我估计你换个网络可能就正常了,如果是笔记本的话,不妨用手机共享个wifi试试,如果是台式机,貌似没法换网络试

报的这些错,都是sdk报的,所以我这也没法调,而且报的都是DNS的问题,不过你ping又没问题,所以,我也不知道怎么调,只能换个网络试试会是什么情况了

ncepuwanghui commented 4 years ago

@xiebruce 我查了下,我本地测试的那张PNG图片,alpha通道未启用(一个像素RGB,3个字节),但是在压缩时设置了Alpha通道(使用RGBA,4个字节)所以压缩后文件大小变大了。 原始PNG图片详细信息: image 压缩后PNG图片信息: image

看了下,源码中涉及图片加载、创建、缩放、裁剪等处调用方法imagesavealpha,并将Alpha通道保saveflag设置成了true。 image

另外,看到源码中EasyImage加载图片方法中imagealphablending方法和imagesavealpha方法顺序是不是反了,需要调整 image

参考如下: image

参考链接:

ncepuwanghui commented 4 years ago

不是所有的图片都有Alpha通道,能否在设置Alpha通道时判断原始图片是否启用了Alpha通道,如果未启用则加载图片压缩等处理后也不设置alpha通道。

xiebruce commented 4 years ago

@ncepuwanghui 我感觉那个顺序应该是没关系的吧,imagesavealpha只是设置一个标记,表示最后保存的时候要保存alpha通道,imagealphablending也只是标记最后保存的时候是否使用混合模式,它们应该不存在先后关系,我有空再看看,不知道能不能判断有没有alpha通道

xiebruce commented 4 years ago

@ncepuwanghui 我试了一下,用ps的文件→导出→存储为web所用格式,然后设置导出格式为png-8,这样保存的图片就是无alpha通道的png格式图片,我试着把PicUploader里imagesavealpha()设置为false,也就是不保存alpha通道,但最后生成的文件一样比原文件大很多,我不知道什么原因,如果你找出了解决方法可以告诉我哈哈。

o1f commented 4 years ago

我这边没有开启压缩,但是复制上传文件大小也会变大 本地选择图片没有问题. 设置

额, 改了下配置,全都拉满 , 好了.. 压缩的话交给了imgbot ..

image

xiebruce commented 4 years ago

@o1f 没有开启压缩是不会变大的,你说的变大,可能是复制图片后直接粘贴到上传区域的吧?这个是浏览器的问题,我文档有说过,具体可以在 这儿 搜索“前面已经说过,在Web端粘贴上传”这句话查看原因。