#php
#php
Вопрос:
Я создаю изображение с текстом на нем следующим образом:
createImage.php
function randExer() {
//Creates a black picture
$img = imagecreatetruecolor(200, 50);
//uses RGB-values to create a useable color
$textColor = imagecolorallocate($img, 255, 255, 255);
$linesColor = imagecolorallocate($img, 192, 192, 192);
//Adds text
imagestring($img, 5, 18, 18, "four five = ?", $textColor);
$rotate = imagerotate($img, $angle, 0);
ob_start();
imagejpeg($rotate);
$contents = ob_get_contents();
ob_end_clean();
$imageData = base64_encode($contents);
$src = "data:" . mime_content_type($contents) . ";base64," . $imageData;
return "<img alt='' src='" . $src . "'/>";
}
Результат
Чтобы фактически отобразить созданное изображение в html, я использую это:
<label id='exercise'>
<?php
echo randExer();
?>'
</label><br>
Сама функциональность работает нормально, и результат выглядит следующим образом — именно так он и должен выглядеть:
Проблема
Проблема в том, что я получаю следующее предупреждение:
Warning: mime_content_type(): Invalid path in createImage.php on line 19
Я действительно не знаю, что не так с путем.
В чем здесь проблема?
Комментарии:
1.
mime_content_type
принимает путь к файлу. Вы предоставляете его$contents
, который является двоичными данными изображения.2.
mime_content_type()
принимает путь к файлу в качестве аргумента. Вы передаете содержимое изob_get_contents()
(это не путь к файлу, а данные изображения). В руководстве по PHP объясняется, как использовать это (и все остальные) Функция PHP.3. Вы знаете , какого типа содержимое, вы создали его с помощью явного вызова
imagejpeg
…!
Ответ №1:
mime_content_type требует путь к тестируемому файлу, а не просто строку base64. Но почему вы пытаетесь распознать mime-тип, когда знаете, что это image / jpeg (с помощью функции imagejpeg).
$src = "data:image/jpeg;base64," . $imageData;