วิธีการเปิดใช้งาน JPEG2000 (jp2) ใน ImageMagick


13

ฉันต้องการใช้ ImageMagick เพื่อแปลงไฟล์บางไฟล์จาก jp2 (JPEG-2000) เป็น jpg คำสั่งให้ทำเช่นนั้นใช้ได้ แต่ฉันไม่รู้วิธีเปิดใช้งานตัวแทน jp2 ใน ImageMagick

ผมติดตั้ง ImageMagick sudo apt-get install ImageMagickผ่านผู้จัดการแพคเกจ:
ฉันใช้ ImageMagick 6.8.9-9 นี้เป็นมากที่สุดถึงวันที่รุ่นของ ImageMagick apt-getใช้ได้จาก

ปัจจุบันมีไฟล์ประเภทหลักจำนวนมากรวมอยู่โดยอัตโนมัติ ไลบรารีต่อไปนี้มีการสนับสนุนในตัวและแสดงรายการเป็นผู้รับมอบสิทธิ์

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

แก้ไข : openjpeg-2ฉันควรจะได้กล่าวถึงผมลองแปลงไฟล์ก่อนที่จะเริ่มทะเลาะวิวาทกับ คำสั่งเช่นconvert input.jp2 output.jpgให้ฉันข้อผิดพลาด:

แปลง: ไม่มีผู้แทนถอดรหัสสำหรับรูปแบบภาพนี้ `JP2 '@ error / constitute.c / ReadImage / 501

ดังนั้นฉันต้องทำให้ jp2 ทำงาน ห้องสมุดเกี่ยวข้องopenjpeg-2และ ImageMagick ของหน้าผู้ได้รับมอบหมายให้ tarball openjpeg-2.0.0.tar.gzที่

ตกลงดังนั้นฉันดาวน์โหลดและปฏิบัติตามคำแนะนำในการติดตั้งที่ระบุในไฟล์ติดตั้ง สิ่งปกติ: cmake ., sudo make install.

แต่ตอนนี้ฉันจะกำหนดค่า ImageMagick เพื่อให้ 'รับ' ได้open-jpeg-2.0.0อย่างไร ฉันต้องสร้าง ImageMagick ใหม่จากแหล่งที่มาหรือไม่ หรือมีคำสั่งที่ฉันสามารถป้อนเพื่อรับ ImageMagick เพื่อเปิดใช้งานหรือไม่ หรือไฟล์ที่ฉันควรเปลี่ยน ฯลฯ

ฉันใช้เวลานานหลายปีอ่านเรื่องนี้อ่านคำถาม & คำตอบทางออนไลน์มากมาย แต่ฉันก็ยังไม่แตก มันเป็นปัญหาของความรู้เกี่ยวกับลินุกซ์ของฉันมากกว่าที่จะทำกับ ImageMagick ต่อหนึ่งครั้งดังนั้นฉันจะขอบคุณถ้ามีคนสามารถช่วยฉันค้นหาว่าขั้นตอนที่ขาดหายไปคืออะไรที่นี่ ขอขอบคุณ.


ฉันแก้ไขปัญหานี้โดยใช้ graphicsmagick แทนเช่นgm convert in.jp2 out.jpg
Sam Wilson

คำตอบ:


3

ติดตั้งlibopenjp2-toolsและใช้opj_decompressเพื่อแปลง jp2 เป็นอย่างอื่น:

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

แพ็คเกจนี้มีเครื่องมือบรรทัดคำสั่งที่ช่วยให้การแปลงระหว่างหลายรูปแบบและยังมีเครื่องมือสำหรับการเข้ารหัสและถอดรหัสรูปแบบวิดีโอเคลื่อนไหว jpeg2000:

  • opj_decompress: ถอดรหัสไฟล์ j2k, jp2 และ jpt เป็น pgm, ppm, pnm, pgx และ bmp
  • opj_compress: เข้ารหัสไฟล์ pnm, pgm, pgx, bmp และ ppm เป็น j2k และ jp2
  • opj_dump: ข้อมูลดัมพ์ประกอบด้วยใน j2k และ jp2
  • index_create: สร้าง jp2 ด้วยไฟล์ดัชนี JPIP จากไฟล์ j2k
  • frames_to_mj2: แปลงวิดีโอสตรีม YUV ให้เป็นรูปแบบ mj2
  • mj2_to_frames: แปลงวิดีโอสตรีม mj2 เป็นรูปแบบ YUV
  • wrap_j2k_in_mj2: ห่อ codestreams j2k ในรูปแบบ mj2
  • แยก -j2k-from_mj2: แยก codestreams j2k จากรูปแบบ mj2

2

ฉันแก้ไขปัญหาการเปิดใช้งานการมอบหมาย openjp2 ใน Imagemagick

ให้แน่ใจว่าคุณได้ติดตั้ง:

  • openjp2> = 2.1 (2.2 เป็นรุ่นล่าสุดที่มีให้ดูhttps://github.com/uclouvain/openjpeg )
  • pkg-config (นั่นคือปัญหาของฉัน)

ตอนนี้เมื่อคุณเรียกใช้./configureคุณสามารถเห็นการมอบหมายopenjp2

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


1

จากการติดตั้ง Image Magick 6.8.9.9 เริ่มต้นของฉันจาก Ubuntu 16.04 ที่เก็บดูเหมือนว่า Jpeg200 ( .jp2) ได้รับการสนับสนุนอย่างเต็มที่

การแปลงสามารถทำได้ด้วย:

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

สำหรับตัวเลือกบรรทัดคำสั่ง esp เกี่ยวกับการเข้ารหัสตัวเลือกหรือการจัดการของภาพกระเบื้องดูภาพเอกสารออนไลน์เวทมนตร์

จะต้องมีการกล่าวอย่างไรก็ตามที่jp2ไม่ได้อยู่ในรายการของรูปแบบที่รองรับ:

identify -list format

อย่างไรก็ตามมันก็ยังทำงานได้ดี


1
ขอบคุณ @Takkat นั่นไม่ใช่กรณีของฉัน เมื่อฉันลองทำสิ่งนี้ ( convert in.jp2 out.jpg) ฉันได้รับข้อความแสดงข้อผิดพลาดว่าฉันไม่มีตัวแทน jp2: convert: ไม่มีผู้แทนการถอดรหัสสำหรับรูปแบบภาพนี้ 'JP2' @ error / constitute.c / ReadImage / 501 ฉันอยู่ที่ 6.8.9.9 (จากconvert --version: เวอร์ชัน: ImageMagick 6.8.9-9 Q16 x86_64 2017-03-14 imagemagick.org ) แปลกจริง ๆ ที่รุ่นของคุณไม่แสดงรายการ jp2 เป็นรูปแบบ แต่ยังใช้งานได้! ไฟล์เอาต์พุต jpg ใช้ได้หรือไม่?
arokath

@arokath: ไฟล์ใช่ถูกต้อง - ฉันทดสอบการแปลงจากและเป็น การอ่าน JPG ด้วย ImageViewer หรือ Gimp นั้นใช้ได้การอ่าน JP2 กับ Gimp หรือ Darktable นั้นใช้ได้
Takkat

ข้อผิดพลาดนี้มีความเกี่ยวข้องเช่นกัน ฉันอาจlibopenjpeg2ติดตั้งจากแอปพลิเคชันอื่น (ไม่สามารถทดสอบได้จนกว่าจะถึงวันนี้)
Takkat

1
อืมฉันดูรายงานบั๊กนั้น แม้ว่าจะมีการติดตั้งlibopenjp2-devและสร้างใหม่จากแหล่งที่มาแล้ว แต่ก็ยังไม่สามารถใช้งานได้ ฉันติด 100% ยังโชคร้าย ขอบคุณสำหรับคำตอบของคุณ!
arokath

1
นี่ไม่ใช่คำตอบสำหรับคำถาม คุณแค่บอกว่ามันเหมาะกับคุณ! และการให้ลิงค์ไปยังเอกสารไม่ใช่คำตอบ!
Azim

1

@ arokath เช่นเดียวกับคุณฉันไม่สามารถหาการสนับสนุน jp2 ใน ImageMagick เวอร์ชันที่ฉันติดตั้งผ่าน apt-get (Ubuntu 16.04.1 LTS)

ก่อนที่จะสร้างจากแหล่ง (ต่อไปนี้เอกสาร ImageMagick ) ผมติดตั้งครั้งแรกแล้วlibopenjp2-toolslibopenjp2-7-dev

หมายเหตุ : ฉันไม่แน่ใจว่าจะใช้วิธีใด: สรุปตามตัวอักษรในตอนท้ายของconfigureการสนับสนุน jp2 ที่แสดงรายการOpenJP2แทนที่จะเป็นJP2ที่ฉันไม่ได้สังเกตเห็นจนกว่าฉันจะติดตั้งlibopenjp2-7-devและกำหนดค่าใหม่ เป็นไปได้ทีเดียวที่ทำงานกับ lib แรกเท่านั้น

นอกจากนี้./configure, makeและmake installฉันพบว่าฉันจำเป็น (ตามข้อเสนอแนะในเอกสาร) เพื่อ sudo ldconfig /usr/local/lib"การกำหนดค่าตัวเชื่อมโยงแบบไดนามิก":

ตอนนี้การส่งออกของ/usr/local/bin/identify -list formatประกอบด้วย:

  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

1
ขอบคุณสำหรับสิ่งนี้. ฉันยังคงมีปัญหาโชคไม่ดี! ผมติดตั้งlibopenjp2-toolsและlibopenjp2-7-devใช้แล้วสร้างขึ้นมาจากแหล่งที่มาวิ่งแล้วapt-get sudo ldconfig /usr/local/lib(ในคำอื่น ๆ ตามเอกสาร) ยังไม่มี JP2 โอ๊ะ! มันกำลังทำหัวของฉันฉันจะทำงานผ่านกระบวนการอีกครั้งในกรณี
arokath

ยังไม่มีโชค ผมสังเกตเห็นว่าเมื่อทำงาน./configureก็ตรวจสอบ JP2 และไม่พบว่ามัน: "การตรวจสอบ LIBOPENJP2 ... ไม่มี" เป็นโบนัสตอนนี้มันไม่ทำงานสำหรับการแปลง JPEG โดยทั่วไป เมื่อฉันลองconvert in.png out.jpgสร้างไฟล์ แต่มันไม่ถูกต้อง - เป็นไฟล์ PNG ที่มีนามสกุล jpg ฉันไม่รู้ว่าทำไม JPEG ควรจะแตกทันทีเมื่อฉันรวบรวมจากแหล่งที่มา!
arokath

ลองเรียกใช้ "apt-get build-dep imagemagick" เพื่อติดตั้งไลบรารีที่ต้องการโดย imagemagick (สิ่งเหล่านี้จะเป็นสิ่งที่สร้างขึ้นในรีลีสดังนั้นคุณจะต้องใช้ openjp2)
cbz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.