amazon s3 — Как использовать AWS S3 для обработки изображений (PHP)

Для своего веб-сайта я хочу сохранить все изображения, используя сервис AWS S3, используя API.

Как сделать это через API / SDK

1) Как загрузить изображение / файл в другую папку с помощью API (с моего сайта).

2) Как изменить размер / обрезать изображение на лету. например, 50×50 пикселей, 250×250 пикселей.

3) Принудительная загрузка.

Спасибо

-1

Решение

Я не думаю, что 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.

  1. Получить детали оригинального файла:

    # 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);
    
  2. Получите данные изображения с помощью file_get_contents (или fopen):

    $data = file_get_contents('s3://bucket/key');
    
  3. создать ресурс изображения из данных и изменить его размер:

    $source = imagecreatefromstring($data);
    
    # Resize
    imagecopyresized($new_image, $source, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
    
  4. Выход:

    header('Content-Type: image/jpeg');
    imagejpeg($thumb);
    

Надеюсь это поможет!

3

Другие решения

Ваш вопрос немного расплывчатый, поэтому ответ не может быть точным. Я дам несколько советов или библиотеку для начала:

  1. Как загрузить изображение / файл в другую папку с помощью API (с моего сайта).

Эта библиотека должна быть хорошим местом для начала работы с S3 и файлами:
https://github.com/tpyo/amazon-s3-php-class

  1. Как изменить размер / обрезать изображение на лету. например, 50×50 пикселей, 250×250 пикселей.

Это должно сделать трюк: https://github.com/eventviva/php-image-resize
Или вы можете попробовать PHP Imagick: http://php.net/manual/en/book.imagick.php

  1. Принудительная загрузка.

У Stackoverflow уже есть ответ для вас:
Как форсировать загрузку файлов с помощью PHP

Надеюсь, это поможет вам начать.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector