我已将图像移至 Rackspace Cloud Files 并正在使用他们的 PHP API。我正在尝试执行以下操作:
- 从我的“原始”容器中获取图像
- 调整大小、锐化等。
- 将调整大小的图像保存到“thumbs”容器
我的问题是#2。我希望调整大小而不必先将原始文件复制到我的服务器(因为图像很大并且我想动态调整大小),但不知道如何调整。这是我到目前为止所拥有的(不多):
$container = $conn->get_container("originals");
$obj = $container->get_object("example.jpg");
$img = $obj->read();
部分问题是我不完全理解 read() 函数返回的内容。我知道 $img 包含对象的“数据”(我能够将其打印为乱码),但它既不是文件,也不是网址,也不是图像资源,所以我不知道如何处理它。是否有可能以某种方式将 $img 转换为图像资源?我尝试了 imagecreatefromjpeg($img) 但没有成功。
谢谢!
最佳答案
首先,如果不将图像加载到内存中,则无法调整图像大小。除非远程服务器提供一些“为我调整图像大小,这是参数”API,否则您必须在脚本中加载图像才能对其进行操作。因此,您必须将文件从 CloudFiles 容器复制到您的服务器,对其进行操作,然后将其发送回存储中。
从$obj->read()
收到的数据是图像数据。这就是文件。它没有文件名,也没有保存在硬盘上,但它是整个文件。要将其加载到 gd 中进行操作,您可以使用 imagecreatefromstring
。这类似于使用 imagecreatefrompng
,只是 imagecreatefrompng
想要自己从文件系统读取文件,而 imagecreatefromstring
仅接受已加载到内存中的数据。
关于php - 直接从 Rackspace 云文件 'object' 调整图像大小而无需下载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7313607/