За последние 24 часа нас посетили 22163 программиста и 1152 робота. Сейчас ищут 729 программистов ...

Вставить изображение из файла jpg в создаваемое изображение

Тема в разделе "PHP для новичков", создана пользователем Nodetron, 28 июн 2022.

  1. Nodetron

    Nodetron Новичок

    С нами с:
    28 июн 2022
    Сообщения:
    1
    Симпатии:
    0
    Здравствуйте.
    Помогите, пожалуйста, с этим фрагментом кода.
    Это код генерации билета (билет - создаваемый файл jpg) локальной билетной системы.
    Изображение билета создается размером 900 (ширина) на 800 (высота).
    В нижней половине впечатывается информация по билету и QR-код.
    Задача: в верхнюю половину вставить цветное изображение (баннер) из заданного файла - img/banner.jpg

    Все нижеприведенное корректно работает. Куда и что вставить, чтобы просто в верхнюю часть еще добавлялась картинка? Испробовал все, что мог, ошибка и все. Заранее благодарю.

    PHP:
    1. function evpl_create_tickets( $order_id ) {
    2.     global $evpl_options;
    3.     if ( ! isset( $evpl_options['create-tickets'] ) || ! $evpl_options['create-tickets'] )
    4.         return false;
    5.     $qr = (isset( $evpl_options['qr-code'] )) ? $evpl_options['qr-code'] : 0;
    6.     $order = evpl_get_order( $order_id );
    7.     $plugin_path = plugin_dir_path( __FILE__ );
    8.     if ( $qr ) {
    9.         include_once $plugin_path . 'qr-code/a-qr-code.php';
    10.         $qr_path     = evpl_qrcode( $order_id );
    11.         $qr_image     = imagecreatefromjpeg( $qr_path );              
    12.     }
    13.  
    14.     $office_info = (isset( $evpl_options['office-info'] )) ? $evpl_options['office-info'] : '---';
    15.  
    16.     $font             = $plugin_path . 'fonts/cent.ttf';
    17.     $fontb             = $plugin_path . 'fonts/centb.ttf';
    18.     $ticket_images     = array();
    19.  
    20.     foreach ( $order->order_places as $event ) {
    21.  
    22.         $event_date     = $event->event_date;
    23.         $event_id     = $event->event_id;
    24.  
    25.         foreach ( $event->event_places as $place ) {
    26.  
    27.             $place_id     = $place['i'];
    28.             $row_name     = (isset( $place['r'] )) ? $place['r'] : '-';
    29.  
    30.             $width     = 900;
    31.             $height     = 800;
    32.  
    33.             $ticket_image = imagecreatetruecolor( $width, $height );
    34.  
    35.             $white     = imagecolorallocate( $ticket_image, 255, 255, 255 );
    36.             $black     = imagecolorallocate( $ticket_image, 0, 0, 0 );
    37.  
    38.             imagefilledrectangle( $ticket_image, 0, 0, $width, $height, $white );
    39.  
    40.  
    41.             //накладываем qr-код
    42.             if ( $qr )
    43.                 imagecopyresampled( $ticket_image, $qr_image, $width - 200, $height - 180, 0, 0, 150, 150, 232, 232 );
    44.  
    45.  
    46.             //рисуем горизонтальную линию
    47.             imageline( $ticket_image, 0, $height-400, 900, $height-400, $black );
    48.  
    49.             //рисуем вертикальную линию
    50.             imageline( $ticket_image, 170, 800, 170, $height-400, $black );
    51.  
    52.             //содержимое корешка
    53.  
    54.             if ( $office_info ) {
    55.  
    56.                 $strings = evpl_parse_strings( $office_info, 55 );
    57.  
    58.                 $right = 10;
    59.                 foreach ( $strings as $k => $string ) {
    60.                     if ( ! $string )
    61.                         continue;
    62.                     $right += 15;
    63.                     imagettftext( $ticket_image, 8, 90, $right, $height - 23, $black, $font, implode( ' ', $string ) );
    64.                 }
    65.             }
    66.  
    67.             imagettftext( $ticket_image, 20, 90, 70, $height - 49, $black, $fontb, 'ЭЛЕКТРОННЫЙ БИЛЕТ' );
    68.             imagettftext( $ticket_image, 16, 90, 90, $height - 82, $black, $fontb, 'на одно посещение' );
    69.             imagettftext( $ticket_image, 11, 90, 120, $height - 40, $black, $font, 'Серия  ААА  № ' . $order_id . $place['p'] . $place['n'] );
    70.             imagettftext( $ticket_image, 11, 90, 120, $height - 250, $black, $font, 'Цена ' . $place['p'] . ' ' . evpl_get_primary_currency( 2 ) );
    71.  
    72.             imagettftext( $ticket_image, 11, 90, 150, $height - 40, $black, $font, 'Ряд ' . $row_name );
    73.             imagettftext( $ticket_image, 11, 90, 150, $height - 155, $black, $font, 'Место ' . $place['n'] );
    74.  
    75.             //содержимое билета
    76.             if ( $office_info )
    77.  
    78.             $event_name = get_the_title( $event_id );
    79.  
    80.             $strings = evpl_parse_strings( $event_name, 120 );
    81.  
    82.             $top = 440;
    83.             foreach ( $strings as $k => $string ) {
    84.                 if ( ! $string )
    85.                     continue;
    86.                 $top += 20;
    87.                 imagettftext( $ticket_image, 22, 0, 190, $top, $black, $fontb, implode( ' ', $string ) );
    88.             }
    89.  
    90.             imagettftext( $ticket_image, 12, 0, 190, 485, $black, $font, 'Дата и время начала: ' . mysql2date( 'j F Y H:i', $event_date ) );
    91.             imagettftext( $ticket_image, 12, 0, 190, 510, $black, $font, 'Ряд ' . $row_name );
    92.             imagettftext( $ticket_image, 12, 0, 350, 510, $black, $font, 'Место ' . $place['n'] );
    93.             imagettftext( $ticket_image, 7, 0, 190, 535, $black, $font, 'Данный бланк является распечаткой электронного билета
    94. '  );
    95.  
    96.             //Контроль
    97.             imagettftext( $ticket_image, 14, 90, $width - 22, $height - 123, $black, $font, 'К О Н Т Р О Л Ь' );
    98.  
    99.             $ticket_image_name     = md5( $order_id . $event_id . $event_date . $place_id ) . '.jpg';
    100.             $ticket_image_path     = $plugin_path . 'tickets/' . $ticket_image_name;
    101.             imagejpeg( $ticket_image, $ticket_image_path, 90 );
    102.             imagedestroy( $ticket_image );
    103.             $ticket_images[] = $ticket_image_path;
    104.         }
    105.     }
    106.  
    107.     if ( $qr ) {
    108.         imagedestroy( $qr_image );
    109.         unlink( $qr_path );
    110.     }
    111.  
    112.     return $ticket_images;
    113. }
     
    #1 Nodetron, 28 июн 2022
    Последнее редактирование модератором: 28 июн 2022
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
    что значит ошибка и все ? за вас понимать кусок кода никто не намерен.
    Помощь !== сделать за меня