我正在尝试将我的图像复制到Amazon S3,如果我可以将图像中的二进制数据传递给它,它会很有效:
$binary = file_get_contents($image_location);
$response = $s3->create_object(AWS_S3_BUCKET, $image_name, array( 'body' => $binary, 'contentType' => $info['mime'], 'acl' => AmazonS3::ACL_PUBLIC));
如何从imagecreatefromjpeg 获取相同的二进制数据?有更简单的方法吗?
我目前正以这种方式获取图像资源:
private function GetImageResource($image, $extension){
switch($extension){
case "jpeg":
case "jpg":
@ini_set('gd.jpeg_ignore_warning', 1);
$resource = imagecreatefromjpeg($image);
break;
case "gif":
$resource = imagecreatefromgif($image);
break;
case "png":
$resource = imagecreatefrompng($image);
break;
}
return $resource;
}
答案 0 :(得分:1)
表达“二进制数据”含糊不清,一切都是二进制的。
PHP函数imagecreatefromjpeg()
打开一个文件,读取它的(二进制)数据(“jpeg image”),并将其转换为PHP使用的某个二进制表示形式(“php image”)。当它期待“原始图像”时,我认为你不能/应该将这些二进制数据传递给亚马逊。如果您有一个PHP图像并想使用$s3->create_object()
,那么我会将其重新转换为某种二进制图像格式(例如imagejpeg()
)并发送该数据。