php处理图片的那些坑
1.php不支持bmp文件,注意这里可以让前端js通过 canvas 转jpg之后再上传 php is not support bmp
2.quality本来为75的jpg保存为90,质量不会提升但是图片大小会变大,而因为默认jpg的压缩quality为75
所以大部分来源的图片都是75的,75不是相对于被处理的图片的当前质量,而是相对于未压缩的bitmap
var quality = 0.75; //默认图片质量为0.75
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d'); // 创建属性节点
var anw = document.createAttribute("width");
anw.nodeValue = w;
var anh = document.createAttribute("height");
anh.nodeValue = h; canvas.setAttributeNode(anw);
canvas.setAttributeNode(anh);
ctx.drawImage(that, 0, 0, w, h);
if(obj.quality && obj.quality <= 1 && obj.quality > 0){
quality = obj.quality;
}
var base64 = canvas.toDataURL('image/jpeg', quality ); // quality值越小,所绘制出的图像越模糊
最后实现的效果见:https://www.tipsns.com/
3.通过js生成的jpg一般都比php生成的相同quality的图片大1/3左右
客户端75 quality的图片比php生成的大,因为没有做zip压缩,zip压缩之后二者大小一致
4.jpg的quality是越大质量越好0-100,png恰恰相反越小越好 0-9
Международное бюро переводов SLOOVO выполняет переводы любой сложности | The international translation agency SLOOVO performs translations of any complexity