Làm cách nào để bật JPEG2000 (jp2) trong ImageMagick?


13

Tôi muốn sử dụng ImageMagick để chuyển đổi một số tệp từ jp2 (JPEG-2000) sang jpg. Lệnh để làm điều đó là tốt, nhưng tôi không biết cách kích hoạt đại biểu jp2 trong ImageMagick.

Tôi đã cài đặt ImageMagick thông qua trình quản lý gói : sudo apt-get install ImageMagick.
Tôi đang sử dụng ImageMagick 6.8.9-9, đây là phiên bản cập nhật nhất của ImageMagick có sẵn từ apt-get.

Hiện tại, rất nhiều loại tệp chính được tự động đưa vào. Các thư viện sau đây có hỗ trợ tích hợp và được liệt kê dưới dạng đại biểu:

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

Chỉnh sửa : Tôi nên đã đề cập, tôi đã thử chuyển đổi tập tin trước khi bắt đầu lộn xộn với openjpeg-2. Một lệnh như convert input.jp2 output.jpgcho tôi thông báo lỗi:

convert: không có giải mã ủy nhiệm cho định dạng hình ảnh này `JP2 '@ error / const acad.c / ReadImage / 501.

Vì vậy, tôi cần phải làm cho jp2 hoạt động. Thư viện có liên quan là openjpeg-2trang đại biểu của ImageMagick đưa ra tarball , openjpeg-2.0.0.tar.gz.

Được rồi, vì vậy tôi đã tải xuống và làm theo hướng dẫn để cài đặt trong tệp cài đặt. Thứ bình thường: cmake ., sudo make install.

Nhưng bây giờ, làm cách nào để định cấu hình ImageMagick để nó 'nhặt lên' open-jpeg-2.0.0? Tôi có phải xây dựng lại ImageMagick từ nguồn để làm như vậy không? Hoặc có một lệnh tôi có thể nhập để có được ImageMagick để kích hoạt nó không? Hoặc một tập tin tôi nên thay đổi, vv?

Tôi đã dành nhiều thời gian và lứa tuổi để xem xét điều này, đọc nhiều câu hỏi và trả lời trực tuyến, nhưng tôi vẫn không phá vỡ nó. Đây là vấn đề về kiến ​​thức Linux của tôi chứ không phải là vấn đề liên quan đến ImageMagick per se , vì vậy tôi thực sự sẽ đánh giá cao nếu ai đó có thể giúp tôi tìm ra bước còn thiếu ở đây. Cảm ơn bạn.


Tôi giải quyết vấn đề này bằng cách sử dụng graphicsmagick thay vào đó, ví dụgm convert in.jp2 out.jpg
Sam Wilson

Câu trả lời:


3

Cài đặt libopenjp2-toolsvà sử dụng opj_decompressđể chuyển đổi jp2 sang thứ khác:

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

Gói này cung cấp các công cụ dòng lệnh cho phép chuyển đổi giữa một số định dạng và cũng cung cấp các công cụ để mã hóa và giải mã các định dạng video chuyển động-jpeg2000:

  • opj_decompress: giải mã các tệp j2k, jp2 và jpt thành pgm, ppm, pnm, pgx và bmp.
  • opj_compress: mã hóa các tệp pnm, pgm, pgx, bmp và ppm thành j2k và jp2.
  • opj_dump: thông tin kết xuất chứa trong j2k và jp2.
  • index_create: tạo jp2 với tệp chỉ mục JPIP từ tệp j2k.
  • frames_to_mj2: chuyển đổi luồng video YUV sang định dạng mj2.
  • mj2_to_frames: chuyển đổi luồng video mj2 sang định dạng YUV.
  • quấn_j2k_in_mj2: bọc mã hóa j2k thành định dạng mj2.
  • extract-j2k-from_mj2: giải nén các đoạn mã j2k từ định dạng mj2.

2

Tôi giải quyết vấn đề của mình là cho phép phái đoàn openjp2 trong Imagemagick.

Hãy chắc chắn rằng bạn đã cài đặt:

Bây giờ khi bạn khởi chạy, ./configurebạn có thể thấy phái đoàn openjp2

GIAO HÀNG = mpeg jbig jng jpeg lcms lzma openjp2 png tiff zlib


1

Từ cài đặt mặc định của tôi về Image Magick 6.8.9.9 từ kho lưu trữ Ubuntu 16.04, có vẻ như Jpeg200 ( .jp2) được hỗ trợ đầy đủ.

Chuyển đổi có thể được thực hiện với:

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

Đối với các tùy chọn dòng lệnh đặc biệt. liên quan đến các tùy chọn mã hóa hoặc xử lý hình ảnh lát gạch, xem tài liệu trực tuyến Image Magick .

Tuy nhiên, phải nói rằng jp2nó không được liệt kê trong danh sách các định dạng được hỗ trợ:

identify -list format

Tuy nhiên, nó dường như vẫn hoạt động tốt.


1
Cảm ơn @Takkat, đó không phải là trường hợp của tôi. Khi tôi thử cái này ( convert in.jp2 out.jpg), tôi nhận được thông báo lỗi rằng tôi không có đại biểu jp2: convert: không giải mã đại biểu cho định dạng hình ảnh này 'JP2' @ error / const const.c / ReadImage / 501. Tôi đang ở 6.8.9.9 (từ convert --version: Version: ImageMagick 6.8.9-9 Q16 x86_64 2017/03/14 imagemagick.org ). Thật kỳ lạ khi phiên bản của bạn không liệt kê jp2 dưới dạng định dạng nhưng vẫn hoạt động! Các tập tin đầu ra jpg có hợp lệ không?
arokath

PS: có một lỗi đánh máy trong liên kết của bạn: php không ph2 :)
arokath

@arokath: yeah các tập tin là hợp lệ - Tôi đã thử nghiệm chuyển đổi từ và sang. Đọc JPG bằng ImageViewer hoặc Gimp đều ổn, đọc JP2 bằng Gimp hoặc Darktable đều ổn.
Takkat

1
Hmm, tôi đã xem báo cáo lỗi đó. Ngay cả khi cài đặt libopenjp2-devvà sau đó xây dựng lại từ nguồn, nó vẫn không hoạt động. Tôi vẫn bị mắc kẹt 100%. Cảm ơn bạn đã trả lời của bạn, mặc dù!
arokath

1
Đây không phải là một câu trả lời cho câu hỏi. Bạn chỉ đang nói rằng nó làm việc cho bạn! Và đưa ra một liên kết đến các tài liệu không phải là một câu trả lời!
Azim

1

@arokath Giống như bạn, tôi không thể tìm thấy hỗ trợ jp2 trong phiên bản ImageMagick mà tôi đã cài đặt thông qua apt-get (Ubuntu 16.04.1 LTS).

Trước khi xây dựng từ nguồn (theo tài liệu ImageMagick ), tôi đã cài đặt trước libopenjp2-toolsvà sau đó libopenjp2-7-dev.

Lưu ý : Tôi không chắc ai đã thực hiện thủ thuật: tóm tắt bảng chữ cái ở cuối configurehỗ trợ jp2 được liệt kê là OpenJP2, thay vì JP2tôi không nhận thấy cho đến khi tôi đã cài đặt libopenjp2-7-devvà định cấu hình lại; nó hoàn toàn có thể làm việc với chỉ lib đầu tiên.

Ngoài ra ./configure, makemake install, tôi thấy rằng tôi cần (như được đề xuất trong tài liệu) để "định cấu hình trình liên kết động" : sudo ldconfig /usr/local/lib.

Bây giờ, đầu ra của /usr/local/bin/identify -list formatchứa:

  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
Cảm ơn vì điều đó. Thật không may, tôi vẫn gặp vấn đề! Tôi đã cài đặt libopenjp2-toolslibopenjp2-7-devsử dụng apt-get, sau đó được xây dựng từ nguồn, sau đó chạy sudo ldconfig /usr/local/lib. (Nói cách khác, làm theo các tài liệu). VẪN không có JP2. Argh! Nó đang làm tôi suy nghĩ. Tôi sẽ thực hiện lại quy trình một lần nữa.
arokath

Vẫn không có may mắn. Tôi nhận thấy rằng khi chạy ./configure, nó sẽ kiểm tra JP2 và không tìm thấy nó: "kiểm tra LIBOPENJP2 ... không" . Như một phần thưởng, hiện tại nó không hoạt động cho các chuyển đổi JPEG nói chung. Khi tôi thử, convert in.png out.jpgnó tạo một tệp nhưng không hợp lệ - đó là tệp PNG chỉ với phần mở rộng jpg. Tôi không biết tại sao JPEG đột nhiên bị phá vỡ khi tôi biên dịch từ nguồn!
arokath

Hãy thử chạy "apt-get build-dep fantemagick" để nó cài đặt các thư viện cần thiết bởi fantemagick (đây sẽ là những thư viện được xây dựng trong bản phát hành, vì vậy bạn vẫn sẽ cần openjp2)
cbz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.