mime_content_type(): недопустимый путь

#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;