Laravel снижает качество изображения, загружая amazon s3Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Laravel снижает качество изображения, загружая amazon s3

Сообщение Anonymous »

Я загружаю изображения справа на amazon s3, и при загрузке изображение теряет качество.
Изображения я хочу сохранить непосредственно в своей корзине amazon s3, чтобы оптимизировать дисковое пространство моей виртуальной машиныИсходный код прилагаю.

public static function uploadToAmazon($photos, $ad_id)
{

// Start Uploading to Amazon Cloud
try {

// Set loop couter
$counter = 0;

// Count photos
$count_photos = count($photos);

// Manage each image
foreach ($photos as $photo) {

$preview_name = 'preview_' . $counter . '.jpg';
$thumbnail_name = 'thumbnail_' . $counter . '.jpg';

$image = Image::make($photo->getRealPath());

// Get Ration
$ratio = $image->width() / $image->height();

/**
* Upload first thumbnails
*/
$targetThumbWidth = 270 * $ratio;
$targetThumbHeight = $targetThumbWidth / $ratio;

// Resize Thumbnail
$thumbNewSize = $image->fit($targetThumbWidth, $targetThumbHeight)->stream();

Storage::disk('s3')->put('photos/'.$ad_id.'/thumbnails/'.$thumbnail_name, $thumbNewSize->__toString());
Storage::disk('s3')->setVisibility('photos/'.$ad_id.'/thumbnails/'.$thumbnail_name, 'public');

/**
* Now upload Preview images
*/
$resposniveSize = Uploader::resposniveSize($image->width(), $image->height());

// Resize Thumbnail
$previewNewSize = $image->fit($resposniveSize[0], $resposniveSize[1])->stream();

// Check if Watermark enabled or not
$is_watermark = Uploader::is_watermark();

if ($is_watermark) {

// Get Watermark Options
$watermark = $is_watermark['watermark'];
$position = $is_watermark['position'];

// Insert Watermark
$image->insert($watermark, $position);

}

Storage::disk('s3')->put('photos/'.$ad_id.'/previews/'.$preview_name, $previewNewSize->__toString());
Storage::disk('s3')->setVisibility('photos/'.$ad_id.'/previews/'.$preview_name, 'public');

// New Counter
$counter ++;

}

if($counter == $count_photos){

// Return Previews Array
$previews_array = array();

// Return Thumbnails Array
$thumbnails_array = array();

for ($i = 0 ; $i $previews_array,
'thumbnails_array' => $thumbnails_array,
);

return $data;

}else{

return false;

}

} catch (\Exception $e) {

/*echo $e->getMessage();
die();*/
return false;

}

}


Правда, я не могу найти момент, в котором изображение теряет качество, будет ли размер изменен?

Это оригинальное изображение
Изображение

Это изображение на Amazon S3
Изображение


public static function resposniveSize($originalWidth, $originalHeight)
{
// Get Ration
$ratio = $originalWidth / $originalHeight;

// New Width
$targetWidth = intval(500 * $ratio);

// New Height
$targetHeight = intval($targetWidth / $ratio);

return array($targetWidth, $targetHeight);
}


Подробнее здесь: https://stackoverflow.com/questions/546 ... -amazon-s3
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»