五维工作室

这里是你们可以实现梦想的地方

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

仅有一条评论

  1. Международное бюро переводов SLOOVO выполняет переводы любой сложности | The international translation agency SLOOVO performs translations of any complexity

添加新评论