dimanche 31 juillet 2016

Quality option in the Imagine laravel component

I have a question about Imagine component. Several days ago I had been installed It and I use It with the laravel 5. Everything looks good, but I have a trouble with a quality options. It looks like this settings are not working when I had been trying to apply It in my code. No errors, warnings or notices, but when I had been trying to apply different values nothing has been changed in the images quality :( my code looks like:

    $imagine = new Imagine();

    $options = [
        //'resolution-units' => ImageInterface::RESOLUTION_PIXELSPERINCH,
        //'resolution-x' => 300,
        //'resolution-y' => 300,
        'jpeg_quality' => 100,
    ];

    $image = $imagine->open($image->getRealPath());
    $size = $image->getSize();
    $width = $size->getWidth();
    $height = $size->getHeight();
    $aspect_ratio = $width / $height;

    $height_in_percent = round((230 * 100) / $height); //округлить (считаем новую высоту, 230px, в процентах от оригинальной)
    $new_width = round(($width * $height_in_percent) / 100); //высчитываем пропорциональную оригинальной новую ширину

    if(!isset($input['original'])) {
        //$aspect_ratio >= 1.3 ? $a = '1' : $a = '0';
        if($aspect_ratio < 1.33) return Redirect::intended($pass)->with('message', 'Пожалуйста, выберите изображение панорамной ориентации (ширина больше, чем высота и соотношение сторон больше или равно 1.33 (aspect ratio))');

        /*$aspect_ratio >= 1.33 ? $img = $img->resize(null, 230, function ($constraint) { //сравниваем AR загружаемого изображения с AR (1.3) выходного изображения, если >= 1.3, то подгоняем по высоте, а потом кропим ширину, иначе - наоборот
            $constraint->aspectRatio(); //автоподгонка по высоте
            $constraint->upsize(); //предотвращение возможного увеличения изображения
        }) : $img = $img->resize(300, null, function ($constraint) {
            $constraint->aspectRatio(); //автоподгонка по высоте
            $constraint->upsize(); //предотвращение возможного увеличения изображения
        });

        $img->crop(300, 230); //кропим изображение*/

        $image = $image->resize(new Box($new_width, 230))
            //->rotate(45)
            ->crop(new Point(0, 0), new Box(300, 230));

    }

    //$img->save('public/' . $image_filename, 90); //rezise изображения починить, ошибка записи в папку
    //$img->save($image_filename, 90); //rezise изображения починить, ошибка записи в папку
    $image->save('images/' . $image_filename, $options);

This morning I had been found a solution which is working as I think. I had been looking in the

private function saveOrOutput

in the imagine/imagine/lib/imagine/Gd/Imagine.php and It looks like there is no 'jpeg_quality' in the $options array, there is 'quality' options exists. So I had been changed It and It's working.

Does anybody working with this component? Is my thoughts correct?



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire