Я пытаюсь сгенерировать и вернуть изображение в шаблон с помощью Silverstripe 3.0 Framework, и у меня возникают некоторые проблемы.
Я возвращаю это в браузер в такой переменной:
public function make_image(){
$string = 'string';
$im = imagecreate(300,300);
$orange = imagecolorallocate($im, 220, 210, 60);
$px = (imagesx($im) - 7.5 * strlen($string)) / 2;
imagestring($im, 3, $px, 9, $string, $orange);
imagepng($im);
imagedestroy($im);
}
Браузер отображает это как:
�PNG IHDR,,C�6PLTE��<��*�"IDATh���1 �Om ?�x-��{�IEND�B`�
Возвращаемые заголовки являются текстовыми/html, и есть только один запрос, который заставляет меня думать, что там происходит что-то странное. Может ли кто-нибудь помочь мне с этим.
Возможно, другой способ добиться этого — Silverstripe с использованием класса Image ()?
header("Content-type: image/png");
- person   schedule 25.03.2013<img src="my_image.png" type="image/png" />
Информации по этому поводу не так много, но не помешает попытаться заставить изображение отображаться правильно на выходе. Вы сначала записываете файл на сервер или сразу кладете его на страницу? Если я сделаю это в своем терминале;file -b my_png_file.png
выводит;PNG image data, 1920 x 1080, 8-bit/color RGB, non-interlaced
. Поскольку вы используете CMS, возможно, ваши заголовки уже отправлены. Попробуйте включитьerror_reporting('E_ALL');
и посмотрите, так ли это. Очень распространенная проблема. Вы можете использовать заголовки изображений только тогда, когда вы получаете PHP как изображение. - person   schedule 25.03.2013header("Content-type: image/png");
, вы сможете вернуть только изображение, а не дополнительный контент. Что-то вроде этого будет результатом;<img src="my_image.php" />
. - person   schedule 25.03.2013