#php
#php
Вопрос:
У меня есть это изображение:
Между текстом я хочу добавить немного текста. Для этого у меня есть следующий код:
<?php
error_reporting(E_ALL);
$thumb_src = 'copyright-symbol.png';
$explode = explode('.', $thumb_src);
$extension = strtolower( end ( $explode ) );
$file_name = basename( $thumb_src );
//image_resize_base_width( $relative_url, $relative_url, 350, $extension);
$jpg_image = imagecreatefrompng( $thumb_src );
// set font size
$font = @imageloadfont($jpg_image);
$fontSize = imagefontwidth($font);
$orig_width = imagesx($jpg_image);
$orig_height = imagesy($jpg_image);
// Create your canvas containing both image and text
$canvas = imagecreatetruecolor( $orig_width, ($orig_height 40 ) );
// Allocate A Color For The background
$bcolor = imagecolorallocate( $canvas, 255, 255, 255 );
// Add background colour into the canvas
imagefilledrectangle( $canvas, 0, 0, $orig_width, ($orig_height 40), $bcolor );
// Save image to the new canvas
imagecopyresampled( $canvas, $jpg_image, 0, 0, 0, 0, $orig_width, $orig_height, $orig_width, $orig_height );
$font_path = 'font/arial.ttf';
$path = 'upload';
$text = 'cc-by-nd-';
// Allocate A Color For The Text
$color = imagecolorallocate($canvas, 0, 0, 0);
// Print Text On Image
imagettftext( $canvas, 13, 0, 0, $orig_height 25, $color, $font_path, $text) ;
// Send Image to Browser
imagepng( $canvas, $path . '/' . $file_name );
// Clear Memory
imagedestroy($canvas);
Но код не добавляет текст к изображению. Что-то не так в моем коде?
Комментарии:
1. Возможно, потребуется удалить
@
из$font = @imageloadfont($jpg_image);
. Похоже, вы загружаете изображение в виде шрифта, это$jpg_image
растровый шрифт?2.
var_dump($jpg_image)
возвращаетсяresource(3) of type (gd)
.3. Больше информации здесь: php.net/manual/en/function.imageloadfont.php
4. Смотрите здесь: code-boxx.com/php-add-text-image
5. @AbsoluteBeginner можете ли вы найти какие-либо проблемы в моем коде?
Ответ №1:
Вы можете изменить коды на
<?php
error_reporting(E_ALL);
header('Content-Type: image/png');
$thumb_src = 'copyright-symbol.png';
$explode = explode('.', $thumb_src);
$extension = strtolower( end ( $explode ) );
$file_name = basename( $thumb_src );
//image_resize_base_width( $relative_url, $relative_url, 350, $extension);
$jpg_image = imagecreatefrompng( $thumb_src );
// set font size
$font = @imageloadfont($jpg_image);
$fontSize = imagefontwidth($font);
$orig_width = imagesx($jpg_image);
$orig_height = imagesy($jpg_image);
// Create your canvas containing both image and text
$canvas = imagecreatetruecolor( $orig_width, ($orig_height 40 ) );
// Allocate A Color For The background
$bcolor = imagecolorallocate( $canvas, 255, 255, 255 );
// Add background colour into the canvas
imagefilledrectangle( $canvas, 0, 0, $orig_width, ($orig_height 40), $bcolor );
// Save image to the new canvas
imagecopyresampled( $canvas, $jpg_image, 0, 0, 0, 0, $orig_width, $orig_height, $orig_width, $orig_height );
$font_path = './font/arial.ttf';
//$path = 'upload';
// Create some colors
$white = imagecolorallocate($canvas, 255, 255, 255);
$grey = imagecolorallocate($canvas, 128, 128, 128);
$black = imagecolorallocate($canvas, 0, 0, 0);
imagefilledrectangle($canvas, 0, 0, 399, 29, $white);
// The text to draw
// Replace path by your own font path
$font = 'font/arial.ttf';
$text = 'cc-by-nd-';
// Add some shadow to the text
imagettftext( $canvas, 100, 0, ($orig_width / 2) - 300, ($orig_height/2) , $color, $font_path, $text) ;
// Using imagepng() results in clearer text compared with imagejpeg()
imagepng($canvas);
imagedestroy($canvas);
?>
Комментарии:
1. Позвольте мне попробовать это сейчас
2. Показывая мне черный фон
3. Пожалуйста, используйте изображение, которое я загрузил.
4. Ответ исправлен (пожалуйста, убедитесь
arial.ttf
, что файл существует в папке шрифтов)