Saya menemukan -annotateoperator ImageMagick sedikit lebih nyaman daripada -drawmetode garethTheRed yang disarankan, karena alasan sederhana bahwa itu tidak memerlukan modifikasi dari file input. Ini tidak sekuat -draw, tetapi untuk membuang grosir file teks ke dalam sebuah gambar, itu berfungsi dengan baik.
convert -size 360x360 xc:white -font "FreeMono" -pointsize 12 -fill black \
-annotate +15+15 "@ascii.txt" image.png
akan menampilkan versi yang diberikan dari konten file yang diberikan, tetapi tanpa harus memodifikasi file "ascii.txt" Anda untuk mengandung text 15x15bagian -drawprimitif.
Menentukan Argumen
Argumen untuk -fontdapat berupa nama font yang didukung, jika FreeMono tidak tersedia (atau memang tidak diinginkan). Daftar font yang tersedia untuk perintah ImageMagick dapat diperoleh dengan menggunakan -listoperator, sehingga convert -list fontakan menampilkan semua argumen yang mungkin untuk-font .
Argumen untuk -annotate(seberapa jauh untuk menggeser teks yang diberikan dari tepi kanvas) terdiri dari offset pixel horizontal dan vertikal (masing-masing). Offset pertama (horizontal x-shift) dapat berupa bilangan bulat positif, tetapi tidak perlu lebih besar dari beberapa piksel. Kedua offset (vertikal y-shift) harus menjadi setidaknya sama dengan ukuran titik font yang dipilih (argumen untuk -pointsize), karena ImageMagick akan menempatkan dasar font di mengingat offset. Jadi, jika Anda tidak menggeser font ke bawah setidaknya pointsizepiksel, bagian atas baris pertama akan terpotong.
Saya sarankan pergi dengan beberapa piksel setidaknya, jadi jika Anda menggunakan -pointsize 64maka Anda harus memasangkannya dengan sesuatu seperti -annotate +15+80. (Tidak ada alasan untuk meningkatkan offset horizontal dengan ukuran font yang lebih besar, tidak ada hubungannya dengan dimensi teks.)
Perlu menebak dimensi yang diperlukan dari gambar output juga bisa membosankan. Saya biasanya hanya memilih nilai yang berlebihan, kemudian mengambil keuntungan dari ImageMagick -trimdan -borderuntuk autocrop hasilnya. Perintah berikut:
convert -size 1000x2000 xc:white -font "FreeMono" -pointsize 12 -fill black \
-annotate +15+15 "@ascii.txt" -trim -bordercolor "#FFF" -border 10 +repage image.png
akan merender ke dalam kotak 1000x2000, kemudian memangkas kelebihan ruang putih kecuali untuk perbatasan 10-pixel di sekitar teks. Yang +repagepaling akhir mencegah PNG keluaran yang dibuat dengan offset gambar, yang sebaliknya akan menyebabkan GIMP memunculkan dialog saat memuat menanyakan apakah harus menerapkan offset.
(Jelas, 1000x2000 berlebihan untuk file teks kecil, dan untuk yang lebih lama setidaknya dimensi vertikal mungkin perlu ditingkatkan. Namun, lebih mudah untuk melebih-lebihkan, karena satu-satunya biaya adalah convertmenggunakan lebih banyak CPU dan memori saat memproses.)
Input Preprocessing
Jika file teks Anda belum diformat dengan cara yang Anda butuhkan untuk merendernya (katakanlah, jika menggunakan garis yang sangat panjang) maka Anda mungkin harus memformat ulang sebelum menyerahkannya convert. ImageMagick tidak akan membungkus teks, sehingga setiap baris teks akan memperpanjang panjang penuh secara horizontal. Untungnya, Anda dapat menjalankan file melalui formatters command-line yang Anda inginkan, kemudian menyalurkan teks yang sudah diproses ke dalam convertalih-alih membaca langsung dari file:
fmt < ascii.txt | convert -size 1000x2000 xc:white -font "DejaVu-Sans-Condensed" \
-pointsize 24 -fill black -annotate +15+30 "@-" -trim -bordercolor "#FFF" \
-border 10 +repage image.png
Itu akan membuat konten ascii.txtdalam 24-point DejaVu Sans Condensed, setelah diproses oleh fmtperintah, yang dalam mode operasi standarnya akan memformat ulang inputnya dengan membungkus kata dengan lebar 75 kolom. (Kecuali jika ada string berkelanjutan panjang yang lebih panjang dari 75 karakter, seperti URL, dalam hal ini mereka akan memperpanjang.)
Setelah fmtmemformat ulang teks, teks tersebut akan diteruskan ke convertyang kemudian akan memberikan hasil yang disalurkan fmt, sama seperti jika ia membaca file secara langsung. (Menentukan nama file -adalah singkatan shell UNIX yang cukup umum untuk "membaca dari input standar, alih-alih file disk yang bernama", dan alat ImageMagick mengikuti konvensi itu.)