Bir PNG'yi PDF'ye nasıl yüksek kalitede dönüştürebilirim, böylece bulanık veya bulanık değil?


54

Bir PDF dosyasını PNG görüntüsüne dönüştürmekle ilgili birçok soru var, ancak güzel bir keskin PNG dosyası alıp sadece bulanık görünmeden veya bir PDF dosyasına gömmek istiyorum. bulanık.

Imaemagic yüklü olduğu gibi basit bir dönüşüm yapabilirim:

convert sample.png sample.pdf

Ayrıca derinliği ve kalite ayarını yapmak için birçok anahtar denedim.

convert -quality 100 sample.png sample.pdf

Ancak PDF hala bulanık / bulanık görünüyor.

İşte örnek bir resim:

http://img406.imageshack.us/img406/6461/picture3mu.png

Bir png olarak net ve temiz. Bir PDF'ye dönüştürdüğümde, aynı boyutta bile bulanık görünüyor:

Resim 4.png http://img803.imageshack.us/img803/9969/picture4at.png

PNG'yi PDF'ye nasıl yüksek kalitede dönüştürebilirim?


Umarım sorunuza iyi bir cevap bulursunuz, ancak görüntüleri JPG formatında saklamanın sadece PDF'nin belirli bir özelliği olduğunu düşünüyorum. PNG, bize gösterdiğiniz gibi, JPG'den daha kaliteli.
jippie

1
@cwd: Bir .tex dosyasına yerleştirmeyi ve ardından PDF'i oluşturmayı denediniz mi? Örneğin \usepackage[pdftex, final]{graphicx}ve ile \includegraphics[width=516px]{calendar.png}.
Emanuel Berg,

2
@jippie: Hayır, PDF olabilir kayıpsız bitmapleri saklamak . Bağlantı, formatlar yerine sıkıştırma algoritmalarının bir listesini verir, çünkü PDF'deki bitmap verileri doğrudan JPEG veya TIFF olarak görüntülenemez ve görüntülenemez, ancak PDF görüntülerinin JPEG (kayıp) olduğunu söylerken çok yanlış gitmezsiniz. ), JPEG 2000 (ayrıca kayıplı) veya birkaç TIFF varyantından herhangi biri (kayıpsız). Ne olduğunu , gerçek ancak, belirli bir PDF distile DCT (aka JPEG) forma tercüme bitmaplere varsayılan ve bunun yerine bir kayıpsız formunu kullanmak söylenmesi gerekebilir olmasıdır.
Warren Young,

@cwd Bazı cevapları kabul etmeyi düşündünüz mü? Sanırım user32208 'in cevabı oldukça iyi. Unix.stackexchange.com/a/64495/16920
Léo Léopold Hertz 준영

Yanıtlar:


34

-densitySeçeneği kullanmayı deneyin . Varsayılan çözünürlük inç başına 72 noktadır. Öyleyse gibi bir şey dene -density 300.

Başvuru -densityiçin ImageMagick komut satırı seçenekleri belgelerine bakın.


Yoğunluk kesinlikle anahtar gibi görünüyor. Ölçek ve yoğunluk ters orantılı görünüyor, bu yüzden hem görünüm hem de dosya boyutu açısından optimum sonuç elde etmek için her iki ayarla da oynuyordum ... Belirlenmiş bir formül varsa, keşke bilseydim.
Brian Z

En iyi yoğunluk seçeneği nasıl bulunur? with density 300Herhangi bir örnek resimde veriler ne kadar kaybedilir ? Sonuç girdilere bağlı olduğunu düşünüyorum. Bununla ilgili yeni bir konu unix.stackexchange.com/q/292025/16920
Léo Léopold Hertz 준영

Bu benim için kalitesini hiç değiştirmez.
Guillaume Chevalier

19

İyi pdf çıktısı elde etmek çok karmaşık olabilir convert. img2pdfBunun yerine deneyin . Benioku'dan:

Gereksiz yere JPEG ve JPEG2000 dosyalarını yeniden kodlamadan görüntülerin PDF'ye kayıpsız dönüştürülmesi. Böylece, kalite kaybı ve gereksiz büyük çıktı dosyası yok.

Netleştirmek için: PDF kayıpsız JPEG 2000 görüntüler ekleyebilir (ve çoğu okuyucu bunları desteklemektedir ). Yani bu dönüşüm tamamen kayıpsız:

convert sample.png -quality 0 sample.jp2
img2pdf -o sample.pdf sample.jp2

(JP2 yetkilisinin elbette mevcut olduğunu varsayarsak: kontrol edin identify -list format | grep JP2.)


4
Bu IMHO buradaki en iyi cevap, ancak amacınızı daha iyi açıklamalısınız, yani PDF, kayıpsız JPEG 2000 görüntülerini gömebilir. Yani OP için tam komut gibi bir şey olacaktır: convert sample.png -quality 0 sample.jp2; img2pdf -o sample.pdf sample.jp2. (JP2 yetkilisinin elbette mevcut olduğunu varsayalım: çek identify -list format | grep JP2.)
Nemo

1
Ubuntu 14'teki standart depolara bağlı kalmak istiyorsanız, convertsonra da karıştırın tiff2pdf.
Camille Goudeseune

Bu harika bir cevap, çok ve çok teşekkür ederim.
Lyubomyr Shaydariv

@ brian-z Cevabınızda , lütfen argümanı açıklayabilir -quality 0misiniz?
SebMa

SebMa, @Nemo bu komutu ekledi, ama -quality 100bunun yerine belki olması gerektiğini düşünüyorum.
Brian Z

14

Ben PDF kalite kaybına olarak gördüğü, senin sadece bir etkisi olduğuna neredeyse eminim PDF görüntüleyici 'ın anti aliasing özelliği.

evincePDF'yi görüntülemek için kullanırsanız , kenar yumuşatma özelliğinin belirli bir zoomda otomatik olarak kapandığını görebilirsiniz (hızlı testimde% 300). Yakınlaştırmaya devam ettiğinizde canlı bir şekilde görebilirsiniz - bir noktada piksellerin aniden net bir şekilde göründüğünü fark edeceksiniz. Kesin görüntü incelemesine izin vermek için kenar yumuşatma işleminin kapatılması gerektiği nokta budur.


Hmm - bu mantıklı ama sanırım bir şekilde görüntüyü ve "ilk bakış açısını"% 100 olarak ayarlayabilmeyi umuyordum ki daha net görünüyordu.
cwd

1
@cwd Görüntüyü pürüzsüzleştirmenin asıl nedeni ile yakınlaştırmayı (dosyayı incelemenin bir yolu) yanlış kullanmayın : kenar yumuşatma . Görüntü doğru şekilde saklanır. Sizi kandıran PDF görüntüleyicisidir. Ancak başka görüntüleme uygulamaları da alabilir ya da ayarlarını değiştirebilseniz bile, bunun tersi de olabilir. Daha sonra bir PDF dosyasında keskin bir görüntü ve bir görüntü görüntüleyicide düzleştirilmiş bir PNG dosyası görebilirsiniz.
rozcietrzewiacz

3

Yukarıdaki Brian Z, png'leri bir pdf'ye koymanın doğru, tamamen geri dönüşümlü ve kayıpsız (dönüştürme adımının aslında kayıpsız olduğu varsayımıyla, en azından olması gerektiğini veya en azından olması gerektiği gibi) olduğunu sağladı. PDF yapısı / okuyucularla uyumlu olmak için png'den kayıpsız jp2'ye dönüştürmeniz gerekiyor (sanırım).

$ convert sample.png -quality 0 sample.jp2
$ img2pdf -o sample.pdf sample.jp2

Ancak .png dosyalarını doğrudan img2pdf dosyasına sağlayabildiğinizi belirtmek gerekir:

$ img2pdf -o sample.pdf sample-page1.png <sample-page2.png ...>

Bu, en küçük pdf dosyasını üretecek ve png'nin ham hex'ini pdf içindeki nesnelere kayıpsız bir şekilde * yerleştirecektir.

* Dezavantajı, bu işlem jp2 kullanımından farklı olarak geri dönüşlü olmamasıdır. Üstbilgi / altbilgi ve ve yığın üstbilgi / altbilgi verileri, yalnızca ham resim verilerini (silinen meta veriler pdf yapısına eklenir) bırakarak yerleştirilen png'den çıkarıldı (dosyaları gerçekten daha da küçük hale getiriyor!), Muhtemelen teknik olarak konteyner ile uyumlu olmayan ham png görüntülemek için pdf "kesmek". Firefox'ta iyi görüntüler ve tüm modern okuyucularda iyi görüntüleyebilir, ancak png kap ile uyumlu değilse, katı okuyucular ham png verilerini işleyemeyebilir (doğru şekilde beklememeleri / işlememeleri gerekir).

Burada, png dosyalarını pdf'ye girmek için kullanılanlarla eşleşen hashlar ile ayıklamak ve yeniden oluşturmak için benim için çalışan son derece ham bir bash betiği bulabilirsiniz. https://github.com/jack4455667788/RebuildRawPNGExtractedFromPDF


2

PDF bir vektör biçimidir (yani, dosya çizilecek çizgilerin bir tanımını içerir), diğer biçimler (JPG, PNG) ise raster biçimlerdir (dosya her pikseli boyamak için hangi rengi tanımlar). Bir PDF'yi patlatırsanız, hala sadece keskin çizgilerdir; JPG ve PNG, pikselleşmeyi gösterir.

(Tamam, tamam, yalan söyledim. PDF de raster olabilir).


2

Png'den pdf'ye -densityparametrenin büyük değil küçük olması gerektiğini düşünüyorum . Gibi bir şey deneyebilirsinconvert -quality 100 -density 50


3
Hayır daha yüksek yoğunluk kesinlikle daha iyi, sadece bir test yaptım, 50 çok görünür pikselle sonuçlandı, 300 güzel ve net görünüyor.
shaunhusain

Bu beni şaşırtıyor, ama bence daha yüksek bir yoğunluk düşük çözünürlükte çıktı ile sonuçlanıyor. Bu, çıktı bulanıksa (orijinal sorudaki örnekte olduğu gibi fazla takma), o zaman düşük yoğunluğun istediğiniz şey olduğu anlamına gelir. Fakat eğer bir PDF pikselleştirilirse , gerçekten daha yüksek bir yoğunlukla dönüştürmeniz gerekir .
Brian Z
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.