Создать изображение из URL: несколько проблем - PullRequest
0 голосов
/ 25 декабря 2010
<?php
if(isset($_GET['img']) && is_numeric($_GET['img'])){ 
$img = $_GET['img']; 

$imgarray = array ( 
'1' => 'http://www.path/to/image1.png', 
'2' => 'http://www.path/to/image2.png', 
'3' => 'http://www.path/to/image3.png'
);

$src = $imgarray[$img];
header('Content-type: image/png');
echo file_get_contents($src);
}
else
{
    header('Content-type: image/png');
echo 'Image could not be loaded';
}
?>

Привет еще раз! У меня много проблем. 1: Когда установлено значение $ _GET ['img'] и его число, изображение будет отображаться справа, но я хочу добавить текст в верхнем правом углу изображения ... Как я могу это сделать? Я просмотрел несколько уроков и примеров по GD, но не могу найти ответ. 2: Когда $ _GET ['img'] не установлено, я хочу отобразить текст: изображение не может быть загружено. Как я могу это сделать? Потому что это не похоже на работу ...

Привет

Ответы [ 2 ]

1 голос
/ 25 декабря 2010

Что вам нужно сделать, это использовать GD.Загрузите запрошенное изображение в PHP с помощью imagecreatefrompng (), так как вы указали pngs в своем массиве, вам придется использовать imagecreatefromjpeg () или что-то еще, в зависимости от их формата.Затем используйте один из авторов текста, таких как imagestring (), чтобы записать текст в местоположение в ресурсе изображения, возвращаемое функцией imagecreatefrompng (), а затем верните ресурс изображения в браузер.

Может также использовать одну из функций, которая использует внешний шрифт, такой как imagettftext (), но должен иметь соответствующий шрифт для использования на сервере.

Для ошибки, если вы хотите, чтобы это было изображение, вам нужно использовать imagecreatetruecolor (), чтобы создать новое изображение, затем использовать imagecolorallocate (), чтобы назначить ему цветовую палитру, а затем использовать imagestring() написать сообщение об ошибке на изображение и вернуть его.Конечно, возможно, будет проще просто создать изображение ошибки в GIMP или что-то в этом роде и вернуть его, вместо того, чтобы каждый раз создавать новую ошибку.

0 голосов
/ 25 декабря 2010

Просто удалите строку с надписью header('Content-type: image/png'); в вашем else{} блоке

Это поможет.В данный момент вы говорите браузеру пользователя, что текст должен восприниматься как изображение, конечно, это не может работать.Если вы хотите изображение с текстом «Изображение не может быть загружено», оно более сложное, чем это ...

...