Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Создание уменьшенной копии изображения при загрузке.

Создание уменьшенной копии изображения при загрузке.


     21.06.2014    Все вопросы » Общие вопросы по PHP    4301

вопрос
И снова здравствуйте!

Ка всегда после долгого гугления пишу сюда.

В данный момент проблема такова: имеется уплоадер скриншотов и постеров.
Который загружает картинки посредством js и php. Всё работает как часы.

Хотел сделать что бы при загрузке изображения делалась миниатюры и загружались в нужные мне папки.

В эти директории хочу грузить тумбы и оригиналы.

Очень долгое гугление выдало решение:
Ниже приведу код создание тумба и наложение ватемарка стандартными возможностями dle.

 php


Разобраться со стандартным генератором dle не смог.



Буду благодарен если покажите на примере, да и вообще любом ответам.
Заранее спасибо.

Ответил: golden_eagle_god


Ну если нужно сделать "Уменьшенную копию изображения при загрузке", то нужно Root-путь загруженного изображения передать в класс thumb, который должен быть заранее подключен. Я делал так:


                include_once ENGINE_DIR . '/classes/thumb.class.php'; //Подключил класс по работе с изображениями (Лучше в начале скрипта)

                $file_path=ROOT_DIR.'/uploads/posts/'.date( "Y-m" )."/".$name_file; //полный путь файла (для примера)

        #Создам малое изображение с ватермарком
        
        $thumb = new thumbnail( $file_path ); // Root путь изображения
        
        $thumb->size_auto(300);
        $thumb->jpeg_quality( 70 );
        
        $thumb->make_watermark;
        $thumb->insert_watermark( );
        
        $thumb->save( ROOT_DIR . "/uploads/posts/" . date( "Y-m" ) . "/thumbs/".$name_file ); //Сохраняю уменьшенное изображение в папке posts/дата/thumbs/ как по стандарту движка
        
        #Делаем Ватермарк На полном изображении
        
        $watermark = new thumbnail( $file_path ); // Root путь изображения
        
        $watermark->make_watermark;
        $watermark->insert_watermark(  );
        
        $watermark->save( $file_path ); //Сохраняю оригинальное изображение с ватермарком на старом месте


Если быть понятнее, то root-путь это что то типо такой ссылки:
Z:\home\mydle10.2.test\www/uploads/posts/2014-06/1403412054_0.jpg

4 комментария

Kota
Юзер

Kota - 22 июня 2014 13:53 -

Спасибо за ответ!

По вашему примеру сделал следующее:

    if(strlen($name)){
        list($txt, $ext) = explode(".", $name);
        if(in_array($ext,$allowed_extensions)){ // смотрим формат такой как мы разрешили?!
            $actual_image_name = time().$session_id.".".$ext;
            $tmp = $_FILES['uploadimg']['tmp_name'];
            if(move_uploaded_file($tmp, $upload_poster_path.$subaction."/".$actual_image_name)){

                #Создам среднее изображение с ватермарком
                $thumb = new thumbnail($upload_poster_big); // Root путь изображения
                $thumb->size_auto('150х260');
                $thumb->jpeg_quality(100);
                $thumb->make_watermark;
                $thumb->insert_watermark($config['max_watermark']);
                $thumb->save($upload_poster_med); //Сохраняю уменьшенное изображение в папке uploads/screens/med/

                #Создам малое изображение с ватермарком
                $thumb = new thumbnail($upload_poster_big); // Root путь изображения
                $thumb->size_auto('102х160');
                $thumb->jpeg_quality(100);
                $thumb->make_watermark;
                $thumb->insert_watermark($config['max_watermark']);
                $thumb->save($upload_poster_sml); //Сохраняю уменьшенное изображение в папке uploads/screens/sml/

                #Делаем Ватермарк На полном изображении
                $watermark = new thumbnail($upload_poster_big); // Root путь изображения
                $watermark->insert_watermark;
                $watermark->insert_watermark($config['max_watermark']);
                $watermark->save($upload_poster_big); //Сохраняю оригинальное изображение с ватермарком на старом месте

                echo "/uploads/anime/".$subaction."/".$actual_image_name;
            }else
                echo "Ошибка загрузки!";
        }else
            echo "Ошибка типа файла!";
    }else
        echo "Ошибка имени файла!";


Но не могу понять для чего эти строчки:

$thumb->make_watermark;
$watermark->insert_watermark;


Подскажите пожалуйста.

golden_eagle_god
Юзер

golden_eagle_god - 22 июня 2014 14:14 -

Пожалуйста, всегда рад помочь.

Цитата: Aleksey-Nyaka
$thumb->make_watermark;
$watermark->insert_watermark;

Устанавливают водяной знак на картинку.
В insert_watermark можно ничего не передавать, оставить пустым.

Kota
Юзер

Kota - 22 июня 2014 14:34 -

Спасибо!

golden_eagle_god
Юзер

golden_eagle_god - 23 июня 2014 11:24 -

Пожалуйста smile

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх