Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 使用Canvas+;HTML5_Image Processing_Html5 Canvas_Image Manipulation_Image Conversion - Fatal编程技术网

Image processing 使用Canvas+;HTML5

Image processing 使用Canvas+;HTML5,image-processing,html5-canvas,image-manipulation,image-conversion,Image Processing,Html5 Canvas,Image Manipulation,Image Conversion,许多文章展示了在客户端使用canvas+html5将jpeg文件转换为灰度的方法。但我需要的是在上传到我的服务器之前将图像转换为8位灰度以减小其大小 使用canvas+html5可以吗?提到了一种toBlob方法,该方法可以将画布转换为jpeg或png,并提供二进制表示。不幸的是,它还没有得到广泛的支持 所以,您所能做的就是使用getImageData获取原始图像数据的字节数组。在这个数组中,每个像素由4个字节表示:红色、绿色、蓝色和alpha。您可以很容易地从中计算灰度值(gray=(红+绿+

许多文章展示了在客户端使用canvas+html5将jpeg文件转换为灰度的方法。但我需要的是在上传到我的服务器之前将图像转换为8位灰度以减小其大小

使用canvas+html5可以吗?

提到了一种toBlob方法,该方法可以将画布转换为jpeg或png,并提供二进制表示。不幸的是,它还没有得到广泛的支持

所以,您所能做的就是使用getImageData获取原始图像数据的字节数组。在这个数组中,每个像素由4个字节表示:红色、绿色、蓝色和alpha。您可以很容易地从中计算灰度值(
gray=(红+绿+蓝)/3*alpha/255;
)。但最终生成的数组将完全未压缩,因此它可能比原始jpeg更大,尽管它每像素仅使用8位。为了减小尺寸,您必须自己实现图像压缩算法。您可能会考虑使用而不是——更容易实现,不引入更多的工件,因为它是无损的,并且在8位图像上表现良好。

将此压缩数据流转换为vialid PNG/JPEG文件的样板数据应添加到服务器上(需要时)