2013-04-02 3 views
0

Предположим, пользователь загружает файл .txt или .php, и я хочу сгенерировать миниатюру .png для него. Есть ли простой способ сделать это, что не требует от меня открыть файл и записать его содержимое в новый .png? У меня есть ImageMagick и FFmpeg доступны, должен быть способ воспользоваться этим, но я много искал и не везет.Создать миниатюру для текстового файла

Заранее спасибо.

+0

Я видел множество вопросов о том, как конвертировать различные форматы изображений в миниатюру. Но я ничего не смог найти при преобразовании .txt-файла, но я уверен, что это можно сделать. Эскиз не будет очень значимым только для текстового файла. – dmikester1

+0

Правда, но это может дать представление о длине и плотности текста. – Sophivorus

+0

Я нашел это: http://stackoverflow.com/questions/3826379/image-magick-converting-text-to-image-is-there-a-way-to-center-the-text-to-t – dmikester1

ответ

2

Вы всегда можете использовать функцию php imagettftext.

Это даст вам представление о том, что находится в текстовом файле.

http://php.net/manual/en/function.imagettftext.php

+0

+ 1. Я бы тоже использовал этот подход. Кажется, самый простой и эффективный способ делать вещи. –

0

Вы можете использовать класс РНР imagick преобразовать файл изображения. Он отлично подходит для txt-файла.

try 
{ 
    $im = new imagick("inputfile.txt[0]"); 
    if ($im) 
    { 
     $im->setImageAlphaChannel(imagick::ALPHACHANNEL_DEACTIVATE); 
     $im->setImageFormat('jpg'); 
     $im->setImageCompressionQuality(85); 
     file_put_contents("outfile.jpg",$im->getImageBlob()); 
    } 
} catch(Exception $e) 
{ 
    echo "cannot process"; 
} 

// When imagick is unable to read the file, it may wrongly 
// set internal server error 500 status code. 
// I do not understand why that happens, because the script 
// continues normally. Anyway, lets overwrite it here for all cases. 
header("HTTP/1.1 200 OK"); 
2

Вы можете использовать ffmpeg:

ffmpeg -video_size 640x480 -chars_per_frame 60000 -i in.txt -frames:v 1 out.png 

enter image description here

Тем не менее, есть некоторые подводные камни:

  • По умолчанию он делает 6000 символов в кадре, так что это может не нарисовать весь текст. Вы можете изменить это с помощью параметров ввода -chars_per_frame и/или -framerate. Частота кадров по умолчанию: 25.

  • Текст не будет автоматически завернут в слово, так что вам придется добавить разрывы строк для текста, чтобы он соответствовал размеру вашего выходного видео.

Смежные вопросы