Bagaimana cara mengaktifkan JPEG2000 (jp2) di ImageMagick?

13

Saya ingin menggunakan ImageMagick untuk mengonversi beberapa file dari jp2 (JPEG-2000) ke jpg. Perintah untuk melakukan itu baik-baik saja, tapi saya tidak tahu cara mengaktifkan delegasi jp2 di ImageMagick.

Saya telah menginstal ImageMagick melalui manajer paket: sudo apt-get install ImageMagick.
Saya menggunakan ImageMagick 6.8.9-9, ini adalah versi terbaru dari ImageMagick apt-get.

Saat ini, banyak jenis file utama disertakan secara otomatis. Perpustakaan berikut ini memiliki dukungan bawaan dan terdaftar sebagai delegasi:

bzlib cairo djvu fftw fontconfig freetype jbig jng jpeg lcr ltdl lzma openexr pangocairo png rsvg tiff wmf x xml zlib

Sunting : Seharusnya saya sebutkan, saya sudah mencoba konversi file sebelum mulai bertengkar openjpeg-2. Perintah like convert input.jp2 output.jpgmemberi saya pesan kesalahan:

convert: no delegate decode untuk format gambar ini `JP2 '@ error / constitute.c / ReadImage / 501.

Jadi, saya harus membuat jp2 berfungsi. Pustaka yang relevan adalah openjpeg-2, dan halaman delegasi ImageMagick memberikan tarball openjpeg-2.0.0.tar.gz,.

Oke, jadi saya unduh dan ikuti instruksi untuk menginstal yang diberikan dalam file instal. Barang normal: cmake ., sudo make install.

Tapi sekarang, bagaimana cara mengkonfigurasi ImageMagick sehingga 'mengambil' open-jpeg-2.0.0? Apakah saya harus membangun kembali ImageMagick dari sumber untuk melakukannya? Atau ada perintah yang bisa saya masukkan untuk mendapatkan ImageMagick untuk mengaktifkannya? Atau file yang harus saya ubah, dll?

Saya telah menghabiskan waktu berabad-abad untuk meneliti hal ini, membaca banyak T&J online, tetapi saya masih tidak memecahkannya. Ini adalah masalah pengetahuan Linux saya alih-alih ada hubungannya dengan ImageMagick sendiri , jadi saya akan sangat menghargainya jika seseorang dapat membantu saya mencari tahu apa langkah yang hilang di sini. Terima kasih.

arokath
sumber
Saya memecahkan masalah ini dengan menggunakan graphicmagick sebagai gantinya, misalnyagm convert in.jp2 out.jpg
Sam Wilson

Jawaban:

3

Instal libopenjp2-toolsdan gunakan opj_decompressuntuk mengonversi jp2 ke yang lain:

sudo apt install libopenjp2-tools
opj_decompress -i m_3712213_sw_10_h_20160625_20161004.jp2 -OutFor TIF -o my.tif

Paket ini dilengkapi dengan alat baris perintah yang memungkinkan konversi antara beberapa format dan juga menyediakan alat untuk encoding dan decoding format video motion-jpeg2000:

  • opj_decompress: mendekode file j2k, jp2, dan jpt ke pgm, ppm, pnm, pgx, dan bmp.
  • opj_compress: mengkodekan file pnm, pgm, pgx, bmp, dan ppm ke j2k, dan jp2.
  • opj_dump: informasi dump berisi dalam j2k dan jp2.
  • index_create: buat jp2 dengan file indeks JPIP dari file j2k.
  • frames_to_mj2: konversi stream video YUV ke format mj2.
  • mj2_to_frames: mengonversi streaming video mj2 ke format YUV.
  • wrap_j2k_in_mj2: bungkus codeststream j2k ke dalam format mj2.
  • ekstrak-j2k-from_mj2: ekstrak j2k codestreams dari format mj2.
Bora M. Alper
sumber
2

Saya mengatasi masalah saya dalam mengaktifkan delegasi openjp2 di Imagemagick.

Pastikan Anda telah menginstal:

Sekarang ketika Anda memulai, ./configureAnda dapat melihat delegasi openjp2

DELEGAT = mpeg jbig jng jpeg lcms lzma openjp2 png tiff zlib

Arnaud
sumber
1

Dari instalasi default saya dari Image Magick 6.8.9.9 dari repositori Ubuntu 16.04 tampaknya Jpeg200 ( .jp2) didukung sepenuhnya.

Konversi dapat dilakukan dengan:

convert in.png out.jp2
convert in.jp2 out.jpg

Untuk opsi baris perintah esp. tentang opsi pengodean atau penanganan gambar ubin, lihat dokumentasi online Image Magick .

Namun harus dikatakan bahwa jp2tidak tercantum dalam daftar format yang didukung:

identify -list format

Namun demikian ternyata masih berfungsi dengan baik.

Takkat
sumber
1
Terima kasih @Takkat, itu tidak terjadi pada saya. Ketika saya mencoba ini ( convert in.jp2 out.jpg), saya mendapatkan pesan kesalahan bahwa saya tidak memiliki delegasi jp2: convert: no decode delegate untuk format gambar ini 'JP2' @ error / constute.c / ReadImage / 501. Saya di 6.8.9.9 (dari convert --version: Versi: ImageMagick 6.8.9-9 Q16 x86_64 2017-03-14 imagemagick.org ). Sangat aneh bahwa versi Anda tidak mencantumkan jp2 sebagai format tetapi masih berfungsi! Apakah file output jpg valid?
arokath
PS: ada salah ketik di tautan Anda: php not ph2 :)
arokath
@arokath: yeah file valid - saya menguji konversi dari dan ke. Membaca JPG dengan ImageViewer atau Gimp adalah OK, membaca JP2 dengan Gimp atau Darktable baik-baik saja.
Takkat
1
Hmm, saya melihat laporan bug itu. Bahkan dengan menginstal libopenjp2-devdan membangun kembali dari sumber, tetap saja tidak berhasil. Sayangnya saya 100% macet. Terima kasih atas balasan Anda!
arokath
1
Ini bukan jawaban untuk pertanyaan itu. Anda hanya mengatakan itu bekerja untuk Anda! Dan memberikan tautan ke dokumentasi bukanlah jawaban!
Azim
1

@arokath Seperti Anda, saya tidak dapat menemukan dukungan jp2 dalam versi ImageMagick yang saya instal melalui apt-get (Ubuntu 16.04.1 LTS).

Sebelum membangun dari sumber (mengikuti dokumen ImageMagick ), saya menginstal dulu libopenjp2-toolsdan kemudian libopenjp2-7-dev.

Catatan : Saya tidak yakin yang mana yang melakukan trik: ringkasan alfabet pada akhir configuredukungan jp2 terdaftar sebagai OpenJP2, daripada JP2yang saya tidak perhatikan sampai saya telah menginstal libopenjp2-7-devdan mengkonfigurasi ulang; sangat mungkin itu bekerja hanya dengan lib pertama.

Selain ./configure, makedan make install, saya menemukan bahwa saya perlu (seperti yang disarankan dalam dokumen) untuk "configure linker dinamis": sudo ldconfig /usr/local/lib.

Sekarang, output /usr/local/bin/identify -list formatmengandung:

  J2C* rw-   JPEG-2000 Code Stream Syntax (2.1.0)
  J2K* rw-   JPEG-2000 Code Stream Syntax (2.1.0)
  JNX* r--   Garmin tile format
  JP2* rw-   JPEG-2000 File Format Syntax (2.1.0)
  JPC* rw-   JPEG-2000 Code Stream Syntax (2.1.0)
  JPM* rw-   JPEG-2000 File Format Syntax (2.1.0)
  JPT* rw-   JPEG-2000 File Format Syntax (2.1.0)
 JSON  -w+   The image format and characteristics
pengguna3294778
sumber
1
Terima kasih untuk ini. Sayangnya, saya masih mengalami masalah! Saya menginstal libopenjp2-toolsdan libopenjp2-7-devmenggunakan apt-get, kemudian dibangun dari sumber, lalu berlari sudo ldconfig /usr/local/lib. (Dengan kata lain, ikuti dokumen). MASIH tidak ada JP2. Argh! Ini melakukan kepalaku masuk. Aku akan menjalankan proses lagi untuk berjaga-jaga.
arokath
Masih belum berhasil. Saya perhatikan bahwa ketika berjalan ./configure, ia memeriksa JP2 dan tidak menemukannya: "memeriksa LIBOPENJP2 ... tidak" . Sebagai bonus, sekarang ini tidak berfungsi untuk konversi JPEG secara umum. Ketika saya mencoba convert in.png out.jpgmembuat file, tetapi tidak valid - itu file PNG hanya dengan ekstensi jpg. Saya tidak tahu mengapa JPEG tiba-tiba harus rusak ketika saya telah dikompilasi dari sumber!
arokath
Coba jalankan "apt-get build-dep imagemagick" sehingga menginstal perpustakaan yang dibutuhkan oleh imagemagick (ini akan menjadi yang dibangun dengan rilis, jadi Anda masih perlu openjp2)
cbz