Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.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 在MySQL数据库Blob列中打开、旋转和存储Tiff图像_Php_Mysql_Tiff - Fatal编程技术网

Php 在MySQL数据库Blob列中打开、旋转和存储Tiff图像

Php 在MySQL数据库Blob列中打开、旋转和存储Tiff图像,php,mysql,tiff,Php,Mysql,Tiff,我的问题相当直截了当: 从MySQL数据库检索图像(当前作为二进制数据存储在blob列中) 将该图像旋转90度(使用PHP的imagerotate) 将应用旋转更改的图像存储回数据库中 我很难找到让我将图像保存为数据流(而不是文件系统)的函数,因为这些图像不允许接触web服务器(因此,它们为什么在数据库中)。欢迎任何建议 谢谢旋转前是否将图像转换为其他类型?你说你正在使用TIFF,GD只能读取,你需要先转换它。可能是 您很可能希望将文件保存到临时目录: 查询数据库中的文件 保存到临时目录(如有

我的问题相当直截了当:

  • 从MySQL数据库检索图像(当前作为二进制数据存储在blob列中)
  • 将该图像旋转90度(使用PHP的imagerotate)
  • 将应用旋转更改的图像存储回数据库中 我很难找到让我将图像保存为数据流(而不是文件系统)的函数,因为这些图像不允许接触web服务器(因此,它们为什么在数据库中)。欢迎任何建议


    谢谢

    旋转前是否将图像转换为其他类型?你说你正在使用TIFF,GD只能读取,你需要先转换它。可能是

    您很可能希望将文件保存到临时目录:

    • 查询数据库中的文件
    • 保存到临时目录(如有必要,您可以通过设置权限来保护文件)
    • 旋转图像
    • 重新插入数据库
    • 删除临时文件

    从数据库中选择数据。将数据传递到

    现在您将拥有一个可以调用imagerotate的图像资源

    要将其保存回DB,您需要使用/或所使用图像类型的等效函数将其输出。这些函数输出到浏览器或文件,以便您可以使用输出缓冲捕获字符串以保存回数据库

    ob_start();
    imagepng($resource);
    $img_data = ob_get_contents();
    ob_end_clean();
    
    $img_数据现在可以保存到数据库中

    ob_start();
    imagepng($resource);
    $img_data = ob_get_contents();
    ob_end_clean();
    

    这只是一个粗略的轮廓,但我希望我已经解释了这个想法。

    如果你可以将它保存在tmp文件中进行旋转,那么在删除文件后,将其保存在db中。PHP的GD图像函数是否支持TIFF文件?请不要,我还没有尝试过,但这是我能想到的最好的方法,不涉及临时文件。输出缓冲可能会弄乱图像数据,因此您必须对其进行测试。这似乎是一个好主意,但当我尝试将blob数据传递给imagecreatefromstring时,我收到一个警告:“数据格式不可识别”我认为GD不支持TIFF,在您的问题中最初没有看到这一点。您可能需要使用像imagemagick这样的外部库。我很确定这个想法适用于png/jpeg,但我对Tiffsign不太熟悉。在做了更多的挖掘之后,我意识到我确实需要使用imagick。不幸的是,在我当前的环境中,我无法访问此库,而且很快也无法访问。不过,谢谢你的帮助。