对于我的网站,我想使用API使用AWS S3服务存储所有图像。
如何通过API / SDK做这件事
1)如何使用API(来自我的网站)将图像/文件上传到不同的文件夹中。
2)如何动态调整大小/裁剪图像。例如50x50像素,250x250像素。
3)强制下载。
谢谢
答案 0 :(得分:3)
我认为AWS没有内置功能来调整S3中任何存储图像的大小。如eldblz所述,您必须自行调整大小。您可以使用S3流包装器。
S3流包装器非常棒:http://docs.aws.amazon.com/aws-sdk-php/v2/guide/feature-s3-stream-wrapper.html
它允许您使用内置的PHP函数,如file_get_contents和file_put_contents。
获取原始文件的详细信息:
# If you have stream wrapper enabled,
# getimagesize will get information from the S3
# you have to pass the S3 URI though
list($width, $height) = getimagesize('s3://bucket/key');
# making the new image 50x50
$new_width = 50;
$new_height = 50;
$new_image = imagecreatetruecolor($new_width, $new_height);
使用file_get_contents(或fopen)获取图像数据:
$data = file_get_contents('s3://bucket/key');
从数据创建图像资源并调整大小:
$source = imagecreatefromstring($data);
# Resize
imagecopyresized($new_image, $source, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
输出:
header('Content-Type: image/jpeg');
imagejpeg($thumb);
希望这有帮助!
答案 1 :(得分:0)
你的问题有点模糊,所以答案不准确。我将提供一些建议或图书馆开始:
这个库应该是开始使用S3和文件的好地方: https://github.com/tpyo/amazon-s3-php-class
这应该可以解决问题:https://github.com/eventviva/php-image-resize 或者你可以试试PHP Imagick:http://php.net/manual/en/book.imagick.php
Stackoverflow已经为您提供了答案: How to force file download with PHP
希望这有助于您入门。