Для своего веб-сайта я хочу сохранить все изображения, используя сервис AWS S3, используя API.
Как сделать это через API / SDK
1) Как загрузить изображение / файл в другую папку с помощью API (с моего сайта).
2) Как изменить размер / обрезать изображение на лету. например, 50×50 пикселей, 250×250 пикселей.
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);
Надеюсь это поможет!
Ваш вопрос немного расплывчатый, поэтому ответ не может быть точным. Я дам несколько советов или библиотеку для начала:
Эта библиотека должна быть хорошим местом для начала работы с 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 уже есть ответ для вас:
Как форсировать загрузку файлов с помощью PHP
Надеюсь, это поможет вам начать.