我正在使用PHP中的cURL从远程服务器保存和调整大量图像,但之前的开发人员没有实现任何类型的系统,使用户上传的图片“安全”,因此用户可以上传任何类型的文件格式与任何类型的名称,然后上传的文件名称保存到数据库,因此许多文件具有非URL安全和iso-8859-8字符。例如:
gaght101125659_5 Gn-eŐs mtó gÁrlós.jpg
根据this answer,我制作了获取图片的代码。
private function getRemoteUrl($file)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $file);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$img = imagecreatefromstring($this->getRemoteUrl($url));//$url contains the plain url of the image.
此代码适用于名称为gaht123115516_2.jpg
的图像,但对于上面显示的示例,它会出错:
Warning: imagecreatefromstring() [function.imagecreatefromstring]: Data is not in a recognized format in /home/test/public_html/resizing.php on line 64
当然,因为花哨的人物。那么我应该在getRemoteUrl($file)
中使用$file
变量来使其工作?这可以用PHP完成吗?如果没有,我应该尝试其他方法/编程语言?