Изображение PHP не отображается при доступе через контроллер - PullRequest
0 голосов
/ 08 марта 2012

Я создаю свой собственный PHP MVC

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

  1. Загрузка файла $this->registry->load->lib('Image');

  2. Метод доступа из файла $this->registry->Image->anyMethod();

Первая строка загружает файл Image.php, расположенный в папке lib, и возвращает instance как $this->registry->Image

затем, используя этот экземпляр, метод anyMethod() из файла может быть доступен как $this->registry->Image->anyMethod(); из Controller

Проблема в том, что я не могу вывести ни одного изображения!

следующий код не работает при доступе с Controller, но работает при непосредственном использовании!

коды взяты из http://in2.php.net/imagettftext

public function anyMethod()
{
// Set the content-type
header('Content-Type: image/png');

// Create the image
$im = imagecreatetruecolor(400, 30);

// Create some colors
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $white);

// The text to draw
$text = 'Testing...';
// Replace path by your own font path
$font = 'arial.ttf';

// Add some shadow to the text
imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);

// Add the text
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);

// Using imagepng() results in clearer text compared with imagejpeg()
imagepng($im);
imagedestroy($im);
}

Пожалуйста, помогите, я застрял.

Примечание. При добавлении ob_clean(); до imagepng($im); кажется работающим, но без текста на изображении.

1 Ответ

0 голосов
/ 08 марта 2012

Добавьте вызов exit; после уничтожения изображения, чтобы предотвратить дальнейшее добавление вывода вашей системой MVC:

imagepng($im);
imagedestroy($im);
exit;

Также проверьте, нет ли других Content-type заголовков перед вашим anyMethod() Звоните.

...