В настоящее время я использую imagecreatefromjpeg()
для добавления текста в изображение. Я работаю со всеми моими файлами в одной папке, однако я использую CodeIgniter, поэтому мои файлы распространяются по разным папкам.
Какое обходное решение для этого?
Я думал о том, чтобы поместить все мои требуемые файлы в свои взгляды, однако это не сработало.
См. Ошибку
Возникла ошибка PHP
Уровень важности: предупреждение
Сообщение: imagettftext(): Не удалось найти/открыть шрифт
Имя файла: views/coupon.php
Номер строки: 30
См. Код
<?php
//Report any errors
ini_set("display_errors", "1");
error_reporting(E_ALL);
//Set the Content Type
// header('Content-type: image/jpeg');
// Create Image From Existing File
$jpg_image = imagecreatefromjpeg('http://localhost:8888/game/rcw/assets/couponWrite.jpg');
// Allocate A Color For The Text
$white = imagecolorallocate($jpg_image, 155, 155, 155);
// Set Path to Font File
$font_path = 'http://localhost:8888/game/rcw/application/views/Arial.ttf';
// Set Text to Be Printed On Image
$text = "IGL" . rand(55555,99999);
// Print Text On Image
imagettftext($jpg_image, 25, 0, 75, 300, $white, $font_path, $text);
// Send Image to Browser
imagejpeg($jpg_image);
// Clear Memory
imagedestroy($jpg_image);
?>
Все, что вам нужно сделать, - это получить доступ к файлу изображения, используя его путь, либо относительно пути к файлу PHP, который его обрабатывает, либо, точнее, его абсолютный путь. Например, скажем, ваш код находится в контроллере, в application/controllers/myImageProcessor.php
и вы хотите загрузить файл, хранящийся в application/input-files
, записать что-то на нем и сохранить измененную версию в public/images
. Вы создаете пути к файлам следующим образом:
// input path is '../input-files/'
$inputPath = dirname(__FILE__).'/input-files/'; // this is an absolute path
$inputName = 'original.jpg';
// output path is '../../public/images/'
$outputPath = dirname(dirname(__FILE__)).'/public/images/';
$outputName = 'modified.jpg';
// load image from file
$img = imagecreatefromjpeg($inputPath.$inputName);
// ...
// write on $img here...
// ...
// save it to other file
imagejpeg($img, $outputPath.$outputName, 95);
Не рекомендуется хранить все файлы в одном каталоге. Кроме того, не смешивайте код с HTML/JS/CSS и никогда, никогда не помещайте в те же исходные файлы каталога с сгенерированными файлами или файлами, полученными из внешних источников (например, загруженными пользователями).