Düz metin dosyam varsa, komut satırından nasıl resim dosyasına dönüştürebilirim? (ve içindeki ASCII sanatının düzenini koru)
catve ekran görüntüsü almıyorsunuz?
clear && cat file. Ama evet, bu çirkin.
Düz metin dosyam varsa, komut satırından nasıl resim dosyasına dönüştürebilirim? (ve içindeki ASCII sanatının düzenini koru)
catve ekran görüntüsü almıyorsunuz?
clear && cat file. Ama evet, bu çirkin.
Yanıtlar:
Bunu yapmak için openoffice (libreoffice) kullanabilirsiniz.
soffice --convert-to jpg "Textfile.doc"
metin dosyalarıyla da çalışır.
--helpÇıktıda bundan bahsetmeme hatta ipucu vermemeye yardımcı olmaz .) Sadece kırışıklık, metin bir sayfadan daha uzunsa, sadece ilk sayfayı aldığınız anlaşılıyor. (Diğer sayfaları veya birden fazla dosyayı çıktısını almanın bir yolu varsa, bu benim için hemen açık değildir. Geçiş --outdirhiçbir fark yaratmaz .) Ancak kısa metin parçaları için, ÇOK iyi çalışır ve hatta otomatik olarak sarılır. Güzel!
soffice --convert-to jpg ascii.txt && mogrify -trim -bordercolor "#FFF" -border 10 +repage ascii.jpg
imagemagickarkadaşın burada. Aşağıdakine benzer bir şey size yardımcı olabilir: -
convert -size 360x360 xc:white -font "FreeMono" -pointsize 12 -fill black -draw @ascii.txt image.png
ascii.txtascii-art dosyanız nerede : -
text 15,15 " .88888888:.
88888888.88888.
.8888888888888888.
888888888888888888
88' _`88'_ `88888
88 88 88 88 88888
88_88_::_88_:88888
88:::,::,:::::8888
88`:::::::::'`8888
.88 `::::' 8:88.
8888 `8:888.
.8888' `888888.
.8888:.. .::. ...:'8888888:.
.8888.' :' `'::`88:88888
.8888 ' `.888:8888.
888:8 . 888:88888
.888:88 .: 888:88888:
8888888. :: 88:888888
`.::.888. :: .88888888
.::::::.888. :: :::`8888'.:.
::::::::::.888 ' .::::::::::::
::::::::::::.8 ' .:8::::::::::::.
.::::::::::::::. .:888:::::::::::::
:::::::::::::::88:.__..:88888:::::::::::'
`'.:::::::::::88888888888.88:::::::::'
`':::_:' -- '' -'-' `':_::::'`
"
ile text 15,15metnin ilk satır olarak (15,15 ofset konum olan). Ayrıca, dönüştürülecek metnin tırnak içine alındığından emin olun. Tek ya da çift tırnaklar, ancak ascii-artınızın bir parçası olarak kullanılmadığından emin olun çünkü konuları karıştıracaktır.
Seçtiğiniz yazı tipi tek aralıklı yazı tipi olmalıdır, aksi takdirde metin hizalanmaz.
Bu şunu üretir: -

-listSeçeneği kullanarak herhangi bir ImageMagick komutundan (convert dahil) şu anda kullanılabilir fontların bir listesini alabilirsiniz . Örneğin convert -list font, size olası tüm argümanları gösterecektir -font.
sudo yum install ImageMagick.
sudo dnf install ImageMagicksürümlerinde install komutu ve diğer popüler Linux dağıtımlarında bazı sudo apt-get install ...komutlar olacaktır. Ne olursa olsun, yukarıdaki bilgiler gerçekten de ImageMagick'in söz konusu sisteme yüklendiğini varsayar.
ImageMagick'in -annotateoperatörünün -drawgarethTheRed'in önerdiği yöntemden biraz daha uygun olduğunu düşünüyorum, çünkü basitçe giriş dosyasının değiştirilmesini gerektirmiyor. Bu kadar güçlü değil -draw, ancak bir metin dosyasının içeriğinin bir görüntüye toptan dökülmesi için iyi hizmet veriyor.
convert -size 360x360 xc:white -font "FreeMono" -pointsize 12 -fill black \
-annotate +15+15 "@ascii.txt" image.png
verilen dosya içeriklerinin işlenmiş bir sürümünü çıkarır, ancak "ascii.txt" dosyanızı ilkel text 15x15parçayı içerecek şekilde değiştirmek zorunda kalmazsınız -draw.
-fontFreeMono yoksa (veya sadece istenmiyorsa) argümanı desteklenen herhangi bir yazı tipi adı olabilir. Herhangi bir ImageMagick komutu tarafından kullanılabilen yazı tiplerinin bir listesi -listoperatör kullanılarak elde edilebilir , böylece convert -list fontolası tüm argümanlar görüntülenir -font.
Argümanları -annotate(işlenen metnin tuval kenarından ne kadar kaydırılacağı) yatay ve dikey piksel ofsetlerinden (sırasıyla) oluşur. İlk ofset (yatay x-shift) herhangi bir pozitif tamsayı olabilir, ancak birkaç pikselden büyük olması gerekmez. Ofset ikinci (dikey y-kaydırma) gerekir olması , en azından seçilmiş yazı (bağımsız değişken nokta boyutuna eşit -pointsize) ImageMagick yerleştirir, çünkü taban çizgisi ofsetini de yazı. Dolayısıyla, yazı tipini en az pointsizepiksel aşağı kaydırmazsanız , ilk satırın üstü kesilir.
En azından birkaç piksel geçmenizi öneriyorum, bu nedenle kullanıyorsanız -pointsize 64bunu böyle bir şeyle eşleştirmelisiniz -annotate +15+80. (Yatay ofseti daha büyük yazı tipi boyutlarıyla artırmak için bir neden yoktur, metin boyutlarıyla hiçbir ilişkisi yoktur.)
Çıktı görüntüsünün gerekli boyutlarını tahmin etmek de sıkıcı olabilir. Genellikle tam o ImageMagick en yararlanmak, aşırı değerleri almaya -trimve -bordersonuç kırpılmayabilir için. Aşağıdaki komut:
convert -size 1000x2000 xc:white -font "FreeMono" -pointsize 12 -fill black \
-annotate +15+15 "@ascii.txt" -trim -bordercolor "#FFF" -border 10 +repage image.png
1000x2000 boyutunda bir kutuya dönüştürülür, ardından metnin her yerinde 10 piksellik bir kenarlık dışındaki fazla boşluk bırakılır. En +repagesonunda, çıkış PNG'sinin bir görüntü ofseti ile oluşturulmasını önler, aksi takdirde GIMP, ofseti uygulamak isteyip istemediğini soran yükte bir iletişim kutusu açar.
(Açıkçası, 1000x2000 küçük metin dosyaları için aşırıdır ve daha uzun olanlar için en azından dikey boyutun artırılması gerekebilir convert.
Metin dosyanız, oluşturmak için zaten gerektiği gibi biçimlendirilmemişse (örneğin, çok uzun satırlar kullanıyorsa), teslim etmeden önce yeniden biçimlendirmeniz gerekebilir convert. ImageMagick metni sarmaz, bu nedenle her metin satırı tam uzunluğunu yatay olarak uzatır. Neyse ki, dosyayı istediğiniz komut satırı biçimlendiricileriyle çalıştırmak, ardından işlenen metni convertdoğrudan dosyadan okumak yerine aktarmak mümkündür :
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
Bu ascii.txt, 24 çalışma DejaVu Sans Condensed içinde, komut tarafından işlendikten sonrafmt , varsayılan çalışma modunda 75 sözcük genişliğine kadar sözcük kaydırma ile girişini yeniden biçimlendirecek. (URL'ler gibi 75 karakterden uzun sürekli dizeler olmadıkça, bu durumda genişlerler.)
fmtMetni yeniden biçimlendirdikten sonra , doğrudan dosya okunuyormuş gibi convert, borulu fmtçıktıyı oluşturacak şekilde iletilir . (Dosya -adını belirtmek, "adlandırılmış disk dosyası yerine standart girdiden oku" için oldukça yaygın bir UNIX kabuğu kısayoludur ve ImageMagick'in araçları bu kurala uyar.)
annotateşeyin göründüğünden emin olmak için argümanın y bileşeni nokta boyutundan daha büyük olmalıdır: istenen boyut convert -size 1000x2000 xc:white -font "FreeMono" -pointsize 123 -fill black \ -annotate +0+123 "@ascii.txt" -trim -bordercolor "#FFF" -border 10 +repage image.pngnerede 123. Ayrıca, convert -list fonthangi yazı tiplerinin desteklendiğini bulmak için de kullanabilirsiniz ( "FreeMono"evrensel olarak desteklenmez).
convert -list fontdoğru sözdizimidir, değil convert -list fonts.
/etc/ImageMagick-7/policy.txtbu dönüştürme formlarından herhangi birine müdahale eden bir politika ayarlanmamış . Dönüştürmeyi hangi politikanın engellediğini ve neden ayarlandığını biliyor musunuz? (Ayrıca, saplarda kavradığı: borulu mu fmt ...? Bir ihtimal Eğer öyleyse, sadece yerini alabilir tarafından komut işin şeklini fmtile catve aynı sonucu elde @ascii.txtsürümü.)
convert başarılı olduğu anlamına mı geliyor ? Oldukça olurdu tuhaf ki durum gibi geliyor bana, ben orada ne olacağını güvenlik kaygıları sorun dusunme yaşıyorum beri de uygulanmaz olacağını , içe aktarılan bir metin dosyasının içeriğine kapalı çalışırken. -drawascii.txt-annotate-draw
/etc/ImageMagick-6/policy.xmliçerir, <policy domain="path" rights="none" pattern="@*"/>bu yüzden tahmin ediyorum. stdin de işe yaramıyor, çünkü muhtemelen @-içinde desen var. Umutsuz için, "$(cat ascii.txt)"CLI uzunluğunu havaya uçurmuyorsa çalışır.