1

我正在尝试将我的图像复制到 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;
}
4

1 回答 1

1

“二进制数据”的表达是模棱两可的,这里的一切都是二进制的。

PHP 函数imagecreatefromjpeg()打开一个文件,读取其(二进制)数据(“jpeg 图像”),并将其转换为 PHP 使用的某种二进制表示(“php 图像”)。我认为您不能/不应该将该二进制数据传递给亚马逊,因为它需要一个“原始图像”。如果您有一个 php 图像并想使用$s3->create_object(),那么我会将其重新转换为某种二进制图像格式(例如imagejpeg())并发送该数据。

于 2013-04-26T19:42:53.373 回答