Di GIMP ada cara yang sangat sederhana untuk melakukan apa yang saya inginkan. Saya hanya menginstal dialog bahasa Jerman tetapi saya akan mencoba menerjemahkannya. Saya berbicara tentang pergi ke Picture -> PrintingSize
dan kemudian menyesuaikan Nilai X-Resolution
dan Y-Resolution
yang saya kenal sebagai nilai DPI. Anda juga dapat memilih format yang secara default Pixel/Inch
. (Dalam bahasa Jerman, dialognya adalah di Bild -> Druckgröße
sana X-Auflösung
dan di sana Y-Auflösung
)
Ok, nilainya sering ada secara 72
default. Ketika saya mengubahnya menjadi misalnya 300
ini memiliki efek bahwa gambar tetap sama di komputer, tetapi jika saya mencetaknya, itu akan lebih kecil jika Anda melihatnya, tetapi semua detailnya masih ada, hanya lebih kecil -> ia memiliki resolusi lebih tinggi pada kertas yang dicetak (tetapi ukuran lebih kecil ... yang baik untuk saya).
Saya sering melakukan itu ketika saya bekerja dengan LaTeX, atau tepatnya dengan perintah pdflatex
pada Ubuntu-Machine baru-baru ini. Ketika saya melakukan proses di atas dengan GIMP secara manual semuanya bekerja dengan baik. Gambar akan tampak lebih kecil dalam PDF yang dihasilkan tetapi dengan kualitas cetak tinggi.
Apa yang saya coba lakukan adalah mengotomatiskan proses masuk ke GIMP dan menyesuaikan nilai DPI. Karena ImageMagick dikenal luar biasa dan saya menggunakannya untuk banyak tugas lain, saya mencoba mencapai tujuan saya dengan alat ini. Tapi itu tidak melakukan apa yang saya inginkan.
Setelah mencoba banyak hal, saya pikir ini sebenarnya adalah perintah yang harus menjadi teman saya:
convert input.png -density 300 output.png
Ini harus mengatur DPI ke 300, karena saya bisa membaca di mana saja di web. Tampaknya berhasil. Tetapi ketika saya memeriksa file itu tetap sama (EDIT: yang saya harapkan, seperti yang dijelaskan di atas).
file input.png output.png
input.png: PNG image data, 611 x 453, 8-bit grayscale, non-interlaced
output.png: PNG image data, 611 x 453, 8-bit grayscale, non-interlaced
Ketika saya menggunakan perintah ini, sepertinya itu melakukan apa yang saya inginkan:
identify -verbose output.png | grep 300
Resolution: 300x300
PNG:pHYs : x_res=300, y_res=300, units=0
Cukup lucu, output yang sama muncul untuk input.png
membingungkan saya ... jadi ini mungkin parameter yang salah untuk ditonton?
Tetapi ketika saya sekarang membuat TeX saya dengan pdflatex
gambar masih besar dan buram. Juga ketika saya membuka gambar dengan GIMP lagi nilai-nilai DPI diatur ke 72
bukan 300
. Jadi sebenarnya tidak ada efek sama sekali.
Sekarang apa masalahnya di sini. Apakah saya mendapatkan sesuatu yang sepenuhnya salah? Saya tidak mungkin salah karena semuanya berjalan baik dengan GIMP.
Terima kasih atas bantuannya. Saya juga terbuka untuk solusi otomatis lainnya yang mudah dilakukan pada sistem Linux.
sumber
^
ikon kecil di sebelah kiri jawabannya), bukan hanya' menerimanya 'segera setelah Anda memiliki reputasi pribadi yang cukup (saya pikir Anda perlu +15) ...Jawaban:
Tentukan unit - Saya sepertinya ingat memiliki masalah ketika saya menghilangkan opsi ini (meskipun DPI harus menjadi default), misalnya:
Apakah Anda tahu bidang data tertanam mana yang digunakan GIMP untuk membaca resolusi - apakah memiliki sendiri yang menimpa yang standar yang digunakan oleh ImageMagick? Misalnya, Photoshop menggunakan
Photoshop:XResolution
danPhotoshop:YResolution
Anda harus mengatur ini untuk Photoshop untuk mengenali pengaturan kepadatan (ImageMagick tidak bisa melakukan ini - kami menggunakan ExifTool).sumber
-density 300
sebelumnyainput.png
. Saya mengonversi PDF. Bagaimanapun, terima kasih.-set units PixelsPerInch -density 300
, sederhana-units
tidak berfungsi terlepas dari urutan opsi.Perhatikan bahwa Anda dapat menggunakan Exiftool untuk membacakan resolusi. Misalnya,
Exiftool '-*resolution*' c.jpg
mungkin ditampilkanUnit Resolusi: inci X Resolusi: 300 Y Resolusi: 300
Exiftool juga dapat mengatur parameter, tetapi seperti yang tercantum dalam halaman
Image::ExifTool::TagNames
manual, Extra Tags XResolution dan YResolution tidak dapat ditulis oleh Exiftool.Saya tidak tahu apakah ImageMagick memiliki opsi untuk mengubah resolusi, tetapi akan terkejut jika tidak. Juga, mudah untuk menulis skrip GIMP untuk mengotomatisasi tugas-tugas seperti ini, dan juga dimungkinkan untuk mengubah resolusi dengan program kecil. Sebagai contoh, berikut ini adalah program C (dapat dikompilasi melalui
gcc setRes.c -O3 -Wall -o setRes
) yang membaca beberapa byte pertama dari file jpeg, mengubah resolusi menjadi 300, dan menulis ulangnya. Program seperti yang ditunjukkan menggunakan konstanta untuk mesin little-endian, seperti x86. Jika dijalankan pada mesin big-endian itu harus diakhiri dengan pesan sepertiError: xyz may be not a .jpg file
, bahkan jika xyz adalah file jpeg. Catatan, saya belum menguji gambar yang dihasilkan melaluipdflatex
; Anda mungkin akan merasa perlu untuk mengirim pertanyaan di SE tex .sumber
Saya tidak dapat menemukan cara meyakinkan konversi hanya dengan menambahkan metadata dan tidak menyandikan ulang bitmap [monochrome] saya; itu memperluas file> 50%.
Saya menemukan bahwa pngcrush (bukan alat ImageMagick) juga dapat menambahkan metadata kerapatan. Baris perintah ini menandainya 600dpi dan memungkinkan pengoptimalan lainnya, yang mengurangi ukuran file hingga ~ 10%:
sumber
"Saya ingin mengubah DPI dengan Imagemagick tanpa mengubah ukuran byte sebenarnya dari data gambar."
Ini sama sekali tidak mungkin!
Karena:
Anda juga tampaknya tidak mengerti apa sebenarnya DPI:
72dpi
.288dpi
.288dpi
pada 1 inci persegi, itu tidak lagi gambar yang sama: itu akan mengalami beberapa ekstrapolasi melalui driver printer atau mekanisme penyaringan lainnya, dan itu akan menjadi gambar 288x288 piksel bukannya gambar 72x72 piksel ... )Jika Anda ingin mencetak asli 72x72 pixel image sebagai 1 inci lebar persegi, tetapi pada
288dpi
, maka Anda harus rescale gambar (dalam hal ini skala itu). Untuk setiap 1 piksel dalam dokumen asli, Anda memerlukan 4 piksel gambar baru yang ditingkatkan. Sekarang ada berbagai algoritma yang dapat digunakan untuk menghitung nilai warna apa yang seharusnya dimiliki 4 piksel ini (3 di antaranya piksel baru):Bagaimanapun Anda membuat gambar yang lebih besar yang terdiri dari 288 baris piksel yang masing-masing tingginya 288 piksel (288x288 piksel).
Apa yang dilakukan Gimp untuk Anda saat Anda menelusuri "Gambar -> Ukuran Pencetakan": ini menyederhanakan proses penghitungan ulang perubahan yang diperlukan dalam ukuran piksel absolut, menjadikannya lebih ramah pengguna. Untuk tujuan ini...
cm
,mm
atauinch
) hasil cetak akan muncul di atas kertas.Menurut kedua informasi ini, Gimp kemudian menghitung jumlah piksel yang harus digunakan (ekstrapolasi dari jumlah piksel asli) untuk mengisi ruang yang diminta pada resolusi yang diminta.
Namun, memperbesar gambar raster dengan membuatnya mengandung lebih banyak piksel tidak menambah info nyata ke dalamnya, dan itu hanya menambah 'kualitas' untuk itu yang fiktif. Ini mungkin terlihat lebih bagus di mata manusia jika algoritme peningkatan Anda adalah yang 'baik'. Dan itu akan terlihat jelek, jika Anda hanya menggandakan, treble atau quadruple piksel yang ada, seperti beberapa algoritma sederhana.
Untuk gambar raster,
pengaturan DPI hanya relevan dalam konteks pencetakan atau tampilan . Karena printer atau monitor telah memberikan, memperbaiki resolusi. Untuk itu adalah info yang hanya ...
perlu tahu.
Dan dokumentasi ImageMagick ini adalah dalam perjanjian penuh dengan saya:
Untuk gambar vektor atau format file
(seperti PDF atau PostScript) pengaturan DPI sangat penting dalam konteks rasterisasi . DPI yang lebih tinggi akan mentransfer lebih banyak informasi gambar ke dalam format raster dan karenanya menyimpan lebih banyak detail dari kualitas asli yang sebenarnya. Saat mengonversi gambar vektor dari ukuran tertentu
mm
,cm
atauinch
menjadi raster dengan DPI yang lebih tinggi akan langsung diterjemahkan ke dalam jumlah piksel total yang lebih tinggi dalam gambar.ImageMagick juga tidak mendukung 'pencetakan'. Sebaliknya, hanya ImageMagick ...
... tetapi untuk mencetak gambar yang dimanipulasi, Anda perlu menggunakan program lain.
Beberapa format gambar (TIFF, PNG, ...) mendukung penyimpanan pengaturan DPI secara internal dalam meta data mereka.
Tapi ini tidak lebih dari atribut 'petunjuk' yang tidak mengubah gambar raster yang mendasarinya. Itulah alasan mengapa Anda membuat penemuan ini:
'Petunjuk' ini mungkin dapat secara otomatis dievaluasi oleh driver printer atau dengan program pembuatan halaman seperti LaTeX. Dengan tidak adanya 'petunjuk' DPI tersebut (atau jika entah bagaimana mereka tidak menampilkan diri mereka seperti yang diharapkan LaTeX), LaTeX masih harus dapat diperintahkan untuk membuat gambar yang diberikan pada halaman seperti yang diharapkan seseorang. to - ini membutuhkan beberapa kode LaTeX yang lebih eksplisit di sekitar gambar!
Beberapa format gambar lainnya (JPEG (?), BMP, ...) bahkan tidak mendukung penyimpanan petunjuk DPI pada data meta internal mereka.
Jadi Gimp hanya mendukung apa yang Anda lakukan dengan "Gambar -> Ukuran Pencetakan" karena ingin mencetak gambar. Dengan ImageMagick Anda tidak dapat mencetak.
Terus lakukan apa yang ingin Anda lakukan dengan Gimp ketika Anda mencetak. Itu tidak masuk akal dengan ImageMagick.
Lihat juga cuplikan dokumentasi IM tambahan ini , yang menjelaskan topik yang sama dengan kata-kata yang berbeda.
Jadi yang tersisa adalah ini:
Harap berikan yang berikut untuk menyelesaikan masalah di atas:
convert -version
danconvert -list configure
);Dengan cara ini kami dapat membantu menyelesaikan masalah.
Tetapi perhatikan: ini adalah masalah yang berbeda dari apa yang diminta subjek / tajuk utama Anda saat ini: "Saya ingin mengubah DPI dengan Imagemagick tanpa mengubah ukuran byte sebenarnya dari data gambar"
Memperbarui
Karena masih belum jelas bagi beberapa pembaca apa yang saya catat di atas, berikut adalah satu lagi upaya ...
Apa pun yang dicatat sebagai 'Resolusi' atau 'Kepadatan' di dalam file gambar, adalah atribut metadata . Ini tidak mempengaruhi jumlah piksel aktual yang dijelaskan oleh file dan sama sekali tidak relevan dalam hal ini. Ini hanya petunjuk bahwa perangkat pencetakan atau rendering atau aplikasi mungkin atau tidak dapat mengikuti saat mencetak, menampilkan atau menampilkan gambar.
Untuk tujuan ini, hanya beberapa nomor yang disimpan dalam file gambar. Angka-angka ini memberi tahu perangkat keluaran seperti printer dan menampilkan berapa banyak titik (atau piksel) per inci gambar yang harus ditampilkan. Untuk format vektor seperti PostScript, PDF, MWF, dan SVG, ia memberi tahu skala piksel untuk menggambar koordinat dunia nyata yang digunakan oleh gambar.
Salah satu contoh, di mana nilai resolusi yang dicatat oleh ImageMagick di dalam metadata gambar TIDAK dihormati oleh aplikasi adalah Adobe Photoshop. Photoshop menyimpan petunjuknya tentang resolusi cetak atau tampilan yang diinginkan dalam profil berpemilik yang bernama 8bim . ImageMagick tidak menyentuh profil ini, bahkan ketika diminta untuk menulis perubahan resolusi menjadi metadata file gambar. Sebaliknya, Photoshop, akan mengabaikan semua petunjuk resolusi yang disimpan oleh ImageMagick di bidang metadata standar yang ditentukan untuk tujuan ini segera setelah melihat profil 8bim -nya sendiri .
OP seharusnya memilih judul:
untuk menghindari semua kesalahpahaman ...
sumber