Как добавить картинку в php
Перейти к содержимому

Как добавить картинку в php

  • автор:

Добавляем изображения из базы данных

Название товара мы берём из базы данных, сделаем то же и с изображением товара.

Используем ещё одну команду из базы — get_img_url . Она поможет получить путь до картинки с товаром. Обратите внимание, эта команда также не является стандартной для языка PHP, а создана разработчиками студии Кекса.

Создадим переменную в сценарии product.php , запишем в неё информацию из базы данных и выведем эту переменную в шаблоне в атрибуте src тега .

Можно добавить переменную в шаблон знакомым способом, но такая запись слишком многословная:

 // Добавили переменную в атрибут картинки в шаблоне

В PHP есть запись покороче:

Работают эти две записи одинаково, разница только в количестве символов.

Думпо уже сократил нашу запись в названии товара. Добавим изображение товара тоже c помощью сокращённого формата. А в атрибут alt элемента img добавим переменную $title . Так описание фотографии будет соответствовать названию товара.

Хотите досконально разбираться в разметке, знать о доступности, строить сетки на флексбоксах? Записывайтесь на профессиональный курс по вёрстке первого уровня, проходящий c 27 мая по 29 июля 2024. До 28 февраля цена 17 900 ₽ 22 900 ₽

Перейти к заданию

вашей квартире

Разнообразные товары для дома с доставкой по всей планете

  • Мсеюлида

    лампа напольная

    Напольная лампа «Мсеюлида»

  • Рмаериби

    диван трёхместный

  • Блетуб

    люстра потолочная

  • выделяет нас среди конкурентов?

    Интернет-магазин товаров для дома

  • Каталог
  • Доставка
  • Контакты
  • Блог
  • Мсеюлида

    лампа напольная

    Напольная лампа «Мсеюлида»

  • Рмаериби

    диван трёхместный

  • Блетуб

    люстра потолочная

  • Ннулм

    рабочий стол

  • Асусмер

    подвесная кровать

    Подвесная кровать «Асусмер»

  • Тре

    набор мебели

  • Заготовка для фото товара

    [ ‘title’ => ‘Лампа Мсеюлида’, ‘url’ => ‘img/item-mseyulida.jpg’, ], ‘2’ => [ ‘title’ => ‘Диван Рмаериби’, ‘url’ => ‘img/item-rmaeribi.jpg’, ], ‘3’ => [ ‘title’ => ‘Люстра Блетуб’, ‘url’ => ‘img/item-bletub.jpg’, ], ‘4’ => [ ‘title’ => ‘Рабочий стол Ннулм’, ‘url’ => ‘img/item-nnulm.jpg’, ], ‘5’ => [ ‘title’ => ‘Подвесная кровать Асусмер’, ‘url’ => ‘img/item-asusmer.jpg’, ], ‘6’ => [ ‘title’ => ‘Набор мебели Тре’, ‘url’ => ‘img/item-tre.jpg’, ], ‘7’ => [ ‘title’ => ‘Люстра как у бабушки’, ‘url’ => ‘img/item-default-old-lamp.jpg’, ], ‘8’ => [ ‘title’ => ‘Лампа Дo’, ‘url’ => ‘img/item-do.jpg’, ], ‘9’ => [ ‘title’ => ‘Печатная машинка Епеус’, ‘url’ => ‘img/item-epeus.jpg’, ], ’10’ => [ ‘title’ => ‘Стикеры Блемпере’, ‘url’ => ‘img/item-blempere.jpg’, ], ’11’ => [ ‘title’ => ‘Панно Туета’, ‘url’ => ‘img/item-tueta.jpg’, ], ’12’ => [ ‘title’ => ‘Органайзер Бреирбери’, ‘url’ => ‘img/item-breirberi.jpg’, ], ’13’ => [ ‘title’ => ‘Подушка Нмяо’, ‘url’ => ‘img/item-nmyao.jpg’, ], ’14’ => [ ‘title’ => ‘Лампа Кел’, ‘url’ => ‘img/item-kel.jpg’, ], ’15’ => [ ‘title’ => ‘Подушка Омасе’, ‘url’ => ‘img/item-omase.jpg’, ], ’16’ => [ ‘title’ => ‘Корзина Орму’, ‘url’ => ‘img/item-ormu.jpg’, ], ’17’ => [ ‘title’ => ‘Скрепки Пинас’, ‘url’ => ‘img/item-pinas.jpg’, ], ’18’ => [ ‘title’ => ‘Компакт-кассета Преум’, ‘url’ => ‘img/item-preum.jpg’, ], ’19’ => [ ‘title’ => ‘Кресло Бадета’, ‘url’ => ‘img/item-badeta.jpg’, ], ’20’ => [ ‘title’ => ‘Сувенир Рмоб’, ‘url’ => ‘img/item-rmob.jpg’, ], ’21’ => [ ‘title’ => ‘Люстра Ткуоко’, ‘url’ => ‘img/item-tkuoko.jpg’, ], ’22’ => [ ‘title’ => ‘Кресла Бриатуо’, ‘url’ => ‘img/item-briatuo.jpg’, ] ]; > function get_product_attribute($id, $attr) < $products = get_products(); $result = $products[$id][$attr] ?? null; return $result; >function get_product_title($id) < return get_product_attribute($id, 'title'); >function get_img_url($id)

    PHP. Загрузка изображений на сервер

    Итак, мы продолжаем обсуждать тему загрузки файлов на сервер. Если вы ещё не читали статью «Что необходимо учитывать при загрузке файлов на сервер», то рекомендую начать именно с неё.

    В вышеуказанной статье мы обсудили общие нюансы загрузки файлов на сервер. А теперь пришло время программировать! В данном примере мы реализуем:

    1. Корректную загрузку картинки на сервер.
    2. Проверку, выбран файл или нет.
    3. Проверку на размер файла.
    4. Грамотную проверку расширения файла.

    Предупреждаю сразу, рассматриваемый код будет без архитектурных изысков, поскольку он должен быть максимально понятным для начинающих.

    Для начала определим, какие файлы и папки будут в нашем проекте:

    1. index.php – обработчик отправки формы
    2. functions.php – библиотека с двумя функциями
    3. img – папка, в которую будут загружаться изображения

    Посмотрим на содержимое индекса.

         Загрузка изображений на сервер    Файл успешно загружен!"; > else< // выводим сообщение об ошибке echo "$check"; > > ?>  

    Кода много, но, пожалуйста, не пугайтесь! Большая часть знакома вам из предыдущей статьи.

    Главное — просто понять схему работы данного скрипта. У нас есть две функции:

    1. can_upload – производит все проверки: возвращает true либо строку с сообщением об ошибке
    2. make_upload – производит загрузку файла на сервер

    Соответственно, если форма была отправлена, мы сначала вызываем функцию can_upload. Если она подтвердила, что файл подходит нам по всем параметрам, то мы вызываем функцию make_upload. Иначе просто распечатываем сообщение об ошибке.

    Здесь всё достаточно коротко и логично. Схема стандартная. Поэтому нас больше интересует, а что именно делают эти загадочные функции can_upload и make_upload!

    Загрузка изображений — фукнции.

    Рассмотрим файл functions.php

     function make_upload($file) < // формируем уникальное имя картинки: случайное число и name $name = mt_rand(0, 10000) . $file['name']; copy($file['tmp_name'], 'img/' . $name); >

    Сначала всего пару слов про функцию make_upload, поскольку она проще. Обратите внимание на то, что мы перед именем файла вставляем mt_rand(0, 10000), т.е, случайное число от 0 до 10000. Делается это для того, чтобы у файла было уникальное имя. В противном случае, при загрузке двух картинок с одинаковыми именами, вторая заменит первую.

    Кстати, если вы задались резонным вопросом, а где же закрывающий тег php в данном файле, значит, вы явно не читали статью «Ошибка headers already sent»!

    Необходимые проверки

    Основной же интерес для нас представляет функция can_upload.

    ($file[‘name’] == ») — мелочь, знакомая вам по предыдущей статье.

    А вот ($file[‘size’] == 0) — это забавно! Особенно с учётом того, что мы говорим при этом, что файл слишком большой! Разгадка кроется в том, что если файл был больше, чем разрешено в настройках сервера, то он не будет загружен вообще. А если файл не загружен, то вполне логично, что его размер равен нулю.

    Ну и наконец, проверка расширения. Здесь мы используем так называемую технику белого листа. Таким листом у нас является массив $types, в котором мы перечисляем все допустимые расширения. Если расширение загружаемого файла не найдено в массиве, значит нам загружают что-то не то.

    Вот собственно говоря и всё! Скрипт надёжный, аккуратный и лаконичный.

    А в следующей статье мы поговорим о том, как можно наложить на загружаемую картинку водяной знак. Рекомендую прочесть!

    Понравился материал? Поделись с друзьями!

    Как добавить картинку в php

    Пример #1 Создание PNG средствами PHP

    header ( «Content-type: image/png» );
    $string = $_GET [ ‘text’ ];
    $im = imagecreatefrompng ( «images/button1.png» );
    $orange = imagecolorallocate ( $im , 220 , 210 , 60 );
    $px = ( imagesx ( $im ) — 7.5 * strlen ( $string )) / 2 ;
    imagestring ( $im , 3 , $px , 9 , $string , $orange );
    imagepng ( $im );
    imagedestroy ( $im );

    Этот пример можно было бы вызвать на странице с тегом: . Приведённый выше скрипт button.php возьмёт строку «text» и наложит её поверх базового изображения, которое является, в данном случае «images/button1.png» и выведет конечное изображение. Это очень удобный способ, чтобы избежать необходимости создания новой кнопки всякий раз, когда вы хотите изменить текст кнопки. С помощью этого метода она генерируются динамически.

    User Contributed Notes 1 note

    7 years ago
    Function to create random png images when requested for example.

    here is create_image.php
    $setting = isset( $_GET [ ‘s’ ]) ? $_GET [ ‘s’ ] : «FFF_111_100_100» ;
    $setting = explode ( «_» , $setting );
    $img = array();

    switch ( $n = count ( $setting )) case $n > 4 :
    case 3 :
    $setting [ 3 ] = $setting [ 2 ];
    case 4 :
    $img [ ‘width’ ] = (int) $setting [ 2 ];
    $img [ ‘height’ ] = (int) $setting [ 3 ];
    case 2 :
    $img [ ‘color’ ] = $setting [ 1 ];
    $img [ ‘background’ ] = $setting [ 0 ];
    break;
    default:
    list( $img [ ‘background’ ], $img [ ‘color’ ], $img [ ‘width’ ], $img [ ‘height’ ]) = array( ‘F’ , ‘0’ , 100 , 100 );
    break;
    >

    $background = explode ( «,» , hex2rgb ( $img [ ‘background’ ]));
    $color = explode ( «,» , hex2rgb ( $img [ ‘color’ ]));
    $width = empty( $img [ ‘width’ ]) ? 100 : $img [ ‘width’ ];
    $height = empty( $img [ ‘height’ ]) ? 100 : $img [ ‘height’ ];
    $string = (string) isset( $_GET [ ‘t’ ]) ? $_GET [ ‘t’ ] : $width . «x» . $height ;

    header ( «Content-Type: image/png» );
    $image = @ imagecreate ( $width , $height )
    or die( «Cannot Initialize new GD image stream» );

    $background_color = imagecolorallocate ( $image , $background [ 0 ], $background [ 1 ], $background [ 2 ]);
    $text_color = imagecolorallocate ( $image , $color [ 0 ], $color [ 1 ], $color [ 2 ]);

    imagestring ( $image , 5 , 5 , 5 , $string , $text_color );
    imagepng ( $image );
    imagedestroy ( $image );

    function hex2rgb ( $hex ) // Copied
    $hex = str_replace ( «#» , «» , $hex );

    switch ( strlen ( $hex )) case 1 :
    $hex = $hex . $hex ;
    case 2 :
    $r = hexdec ( $hex );
    $g = hexdec ( $hex );
    $b = hexdec ( $hex );
    break;

    case 3 :
    $r = hexdec ( substr ( $hex , 0 , 1 ). substr ( $hex , 0 , 1 ));
    $g = hexdec ( substr ( $hex , 1 , 1 ). substr ( $hex , 1 , 1 ));
    $b = hexdec ( substr ( $hex , 2 , 1 ). substr ( $hex , 2 , 1 ));
    break;

    default:
    $r = hexdec ( substr ( $hex , 0 , 2 ));
    $g = hexdec ( substr ( $hex , 2 , 2 ));
    $b = hexdec ( substr ( $hex , 4 , 2 ));
    break;
    >

    $rgb = array( $r , $g , $b );
    return implode ( «,» , $rgb );
    >