Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
ncepuwanghui opened this issue Jan 9, 2020 · 10 comments
Open

Comments

@ncepuwanghui
Copy link

ncepuwanghui commented Jan 9, 2020

原文件大小:
image

上传后的文件大小:
image

压缩参数配置:
image

请求头:
image

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

@xiebruce
Copy link
Owner

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

@xiebruce
Copy link
Owner

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

@ncepuwanghui
Copy link
Author

ncepuwanghui commented Jan 10, 2020

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

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

域名解析正常,
image
1578650280827

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

@xiebruce
Copy link
Owner

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

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

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

@ncepuwanghui
Copy link
Author

ncepuwanghui commented Jan 14, 2020

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

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

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

参考如下:
image

参考链接:

@ncepuwanghui
Copy link
Author

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

@xiebruce
Copy link
Owner

xiebruce commented Jan 14, 2020

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

@xiebruce
Copy link
Owner

xiebruce commented Jan 15, 2020

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

@o1f
Copy link

o1f commented Jul 30, 2020

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

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

image

@xiebruce
Copy link
Owner

xiebruce commented Jul 30, 2020

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants