我如何从imagecreatefromjpeg获取二进制数据

时间:2013-04-26 18:44:39

标签: php image amazon-s3 imagecreatefrompng

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

1 个答案:

答案 0 :(得分:1)

表达“二进制数据”含糊不清,一切都是二进制的。

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