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
Php 将图像二进制数据转换为字母数字数据而不增加大小_Php_Image Processing_Optimization_Binary Data - Fatal编程技术网

Php 将图像二进制数据转换为字母数字数据而不增加大小

Php 将图像二进制数据转换为字母数字数据而不增加大小,php,image-processing,optimization,binary-data,Php,Image Processing,Optimization,Binary Data,我是新来的。出于某种原因,我需要将图像文件转换为某种字母数字数据,而不增加其文件大小。我知道当你把二进制转换成十六进制时,大小会增加。但是还有别的办法吗 下面是我一直在做的一些事情。我还使用了gzencode和gzcompress,但其大小仍然明显大于其原始大小 //Pull the data from your file into a variable. Using the 'rb' tag tells it to read as binary. $data = fopen($

我是新来的。出于某种原因,我需要将图像文件转换为某种字母数字数据,而不增加其文件大小。我知道当你把二进制转换成十六进制时,大小会增加。但是还有别的办法吗

下面是我一直在做的一些事情。我还使用了gzencode和gzcompress,但其大小仍然明显大于其原始大小

    //Pull the data from your file into a variable. Using the 'rb' tag tells it to read as binary.
    $data = fopen($photo_file_path, 'rb');

    $size = filesize($photo_file_path);

    $contents = fread($data, $size);

    fclose ($data);

    $bintohex = bin2hex($contents);

二进制数据通常是非常紧凑的,因此当您为自己设置每字节存储较少信息的任务时,文件大小将不可避免地膨胀。例如,已知使用会使尺寸膨胀约30%。如果信息密度较低,则无法以相同的字节数存储相同数量的信息。您正在将数据转换为人类可读的十六进制表示形式。当然,您正在显著增加文件大小。这正是人类可读性的本质。从8位/字节到4位/字节,文件大小将翻倍。这就是为什么互联网上的所有图像都被编码为二进制JPEG,PNG和GIFs图像已经被压缩,压缩将没有任何效果。你想要的是不可能的。Base64是您所能做的最好的(将增加文件大小33%)。二进制数据通常非常紧凑,因此当您自己设置每字节存储较少信息的任务时,文件大小将不可避免地增大。例如,已知使用会使尺寸膨胀约30%。如果信息密度较低,则无法以相同的字节数存储相同数量的信息。您正在将数据转换为人类可读的十六进制表示形式。当然,您正在显著增加文件大小。这正是人类可读性的本质。从8位/字节到4位/字节,文件大小将翻倍。这就是为什么互联网上的所有图像都被编码为二进制JPEG,PNG和GIFs图像已经被压缩,压缩将没有任何效果。你想要的是不可能的。Base64是您能做的最好的(将增加文件大小33%)。