指向要使用的文件格式的ImageMagick

时间:2017-11-22 08:51:23

标签: php imagemagick imagick

我想知道是否不可能给ImageMagick提示输入字符串(或文件)的类型。

电子。 G。将.sql视为文本文件。

我需要它在php(Imagick)中使用。

我唯一得到的是文件格式未知的例外:

no decode delegate for this image format `' @ error/blob.c/BlobToImage/361

2 个答案:

答案 0 :(得分:1)

您可以告诉 ImageMagick 文件包含如下文字:

convert TEXT:stuff.sql result.png

将为您提供文本文件stuff.sql的内容的图像。

因此,如果您想要目录列表的图像,可以执行以下操作:

ls -l | convert TEXT:- listing.png

或者,如果文件commands.sql中有一些SQL:

convert -background yellow -fill magenta text:commands.sql -trim result.png

enter image description here

或者,如果您希望它居中并具有更大的边框:

convert -background yellow -fill magenta text:commands.sql -trim  \
        -gravity center -extent 120%x120% result.png

enter image description here

答案 1 :(得分:1)

正如@MarkSetchell所提到的,你可以通过为它添加前缀来告诉ImageMagick(自定义)文件类型。

TXT:/path/to/file.sql

例如

identify -list format
  • 我想你必须在特定列表中添加前缀文件格式; $im = new Imagick("txt:/path/to/file.sql");应该为您提供linux上支持的格式列表
  • 这也适用于php:$im->readImageBlob(...)
  • 当文件内容为blob(Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null); while (phones.moveToNext()) { String name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); String phone = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); String id = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID)); String image_uri = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.PHOTO_URI)); mContactArrayList.add(new Contact(id, name, phone, image_uri)); }
  • 时,也许有人知道它是如何工作的