Php 在MySQL数据库Blob列中打开、旋转和存储Tiff图像
我的问题相当直截了当:Php 在MySQL数据库Blob列中打开、旋转和存储Tiff图像,php,mysql,tiff,Php,Mysql,Tiff,我的问题相当直截了当: 从MySQL数据库检索图像(当前作为二进制数据存储在blob列中) 将该图像旋转90度(使用PHP的imagerotate) 将应用旋转更改的图像存储回数据库中 我很难找到让我将图像保存为数据流(而不是文件系统)的函数,因为这些图像不允许接触web服务器(因此,它们为什么在数据库中)。欢迎任何建议 谢谢旋转前是否将图像转换为其他类型?你说你正在使用TIFF,GD只能读取,你需要先转换它。可能是 您很可能希望将文件保存到临时目录: 查询数据库中的文件 保存到临时目录(如有
谢谢旋转前是否将图像转换为其他类型?你说你正在使用TIFF,GD只能读取,你需要先转换它。可能是 您很可能希望将文件保存到临时目录:
- 查询数据库中的文件
- 保存到临时目录(如有必要,您可以通过设置权限来保护文件)
- 旋转图像
- 重新插入数据库
- 删除临时文件
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。不幸的是,在我当前的环境中,我无法访问此库,而且很快也无法访问。不过,谢谢你的帮助。