Jak włączyć JPEG2000 (jp2) w ImageMagick?


13

Chcę użyć ImageMagick do konwersji niektórych plików z JP2 (JPEG-2000) na JPG. Polecenie to jest w porządku, ale nie wiem jak włączyć delegata jp2 w ImageMagick.

Mam zainstalowany ImageMagick poprzez menadżera pakietów: sudo apt-get install ImageMagick.
Używam ImageMagick 6.8.9-9, jest to najbardziej aktualna wersja ImageMagick dostępna z apt-get.

Obecnie wiele głównych typów plików jest włączanych automatycznie. Następujące biblioteki mają wbudowane wsparcie i są wymienione jako delegaci:

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

Edycja : Powinienem wspomnieć, próbowałem konwersji plików, zanim zacząłem się kłócić openjpeg-2. Polecenie typu convert input.jp2 output.jpgdaje mi komunikat o błędzie:

konwersja: brak delegata dekodowania dla tego formatu obrazu `JP2 '@ error / constit.c / ReadImage / 501.

Więc muszę uruchomić jp2. Stosowne jest biblioteka openjpeg-2, a ImageMagick w stronę delegatów daje archiwum, openjpeg-2.0.0.tar.gz.

Okej, więc go pobrałem i postępowałem zgodnie z instrukcjami instalacji podanymi w pliku instalacyjnym. Normalne rzeczy: cmake ., sudo make install.

Ale teraz, jak skonfigurować ImageMagick, aby „odbierał” open-jpeg-2.0.0? Czy w tym celu muszę odbudować ImageMagick ze źródła? Czy istnieje polecenie, które mogę wprowadzić, aby ImageMagick mógł je włączyć? Lub plik, który powinienem zmienić itp.?

Spędziłem całe wieki, przyglądając się temu, czytając wiele pytań i odpowiedzi online, ale nadal tego nie łamałem. Jest to kwestia mojej wiedzy o Linuksie, a nie coś wspólnego z ImageMagick per se , więc byłbym bardzo wdzięczny, gdyby ktoś mógł mi pomóc dowiedzieć się, jaki jest brakujący krok. Dziękuję Ci.


Rozwiązałem ten problem, używając zamiast tego grafiki, np.gm convert in.jp2 out.jpg
Sam Wilson

Odpowiedzi:


3

Zainstaluj libopenjp2-toolsi użyj, opj_decompressaby przekonwertować JP2 na coś innego:

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

Ten pakiet zawiera narzędzia wiersza polecenia umożliwiające konwersję między różnymi formatami, a także narzędzia do kodowania i dekodowania formatów wideo motion-jpeg2000:

  • opj_decompress: dekoduje pliki j2k, jp2 i jpt do formatu pgm, ppm, pnm, pgx i bmp.
  • opj_compress: koduje pliki pnm, pgm, pgx, bmp i ppm do plików j2k i jp2.
  • opj_dump: informacje o zrzutach zawierają w j2k i jp2.
  • index_create: utwórz plik jp2 z plikiem indeksu JPIP z pliku j2k.
  • frames_to_mj2: konwertuje strumienie wideo YUV do formatu mj2.
  • mj2_to_frames: konwersja strumieni wideo mj2 do formatu YUV.
  • wrap_j2k_in_mj2: zawiń strumienie kodu j2k do formatu mj2.
  • extract-j2k-from_mj2: wyodrębnij strumienie kodu j2k z formatu mj2.

2

Rozwiązuję problem z włączeniem delegacji openjp2 w Imagemagick.

Upewnij się, że zainstalowałeś:

Teraz po uruchomieniu ./configuremożesz zobaczyć delegację openjp2

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


1

Z mojej domyślnej instalacji Image Magick 6.8.9.9 z repozytoriów Ubuntu 16.04 wygląda na to, że Jpeg200 ( .jp2) jest w pełni obsługiwany.

Konwersji można dokonać za pomocą:

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

Opcje wiersza polecenia esp. w sprawie opcji kodowania lub obsługi obrazów sąsiadujących patrz dokumentacja online Image Magick .

Trzeba jednak powiedzieć, że jp2nie ma go na liście obsługiwanych formatów:

identify -list format

Niemniej jednak najwyraźniej nadal działa dobrze.


1
Dzięki @Takkat, to nie dotyczy mnie. Gdy próbuję tego ( convert in.jp2 out.jpg), pojawia się komunikat o błędzie, że nie mam delegata JP2 : konwersja: brak delegata dekodowania dla tego formatu obrazu „JP2” @ error / constit.c / ReadImage / 501. Mam 6.8.9.9 (z convert --version: Wersja: ImageMagick 6.8.9-9 Q16 x86_64 2017-03-14 imagemagick.org ). Naprawdę dziwne, że twoja wersja nie wyświetla jp2 jako formatu, ale nadal działa! Czy pliki wyjściowe jpg są prawidłowe?
arokath

@arokath: tak pliki są prawidłowe - przetestowałem konwersję zi do. Czytanie JPG z ImageViewer lub Gimp jest w porządku, czytanie JP2 z Gimp lub Darktable było w porządku.
Takkat,

Ten błąd jest również istotny. Mogłem libopenjpeg2zainstalować z innej aplikacji (nie mogę tego przetestować do dzisiaj).
Takkat,

1
Hmm, spojrzałem na ten raport o błędzie. Nawet po zainstalowaniu, libopenjp2-deva następnie przebudowie ze źródła, nadal nie działa. Niestety wciąż tkwię w 100%. Ale dziękuję za odpowiedzi!
arokath

1
To nie jest odpowiedź na pytanie. Po prostu mówisz, że to działa dla Ciebie! Podanie linku do dokumentacji nie jest odpowiedzią!
Azim

1

@arokath Tak jak ty, nie mogłem znaleźć wsparcia dla jp2 w wersji ImageMagick, którą zainstalowałem przez apt-get (Ubuntu 16.04.1 LTS).

Przed budynku od źródła (w następstwie docs ImageMagick ), zainstalowałem najpierw libopenjp2-tools, a potem libopenjp2-7-dev.

Uwaga : Nie jestem pewien, który z nich wykonał tę sztuczkę: podsumowanie alfabetyczne na końcu configurewymienionej obsługi jp2 jako OpenJP2, a raczej JP2tego, czego nie zauważyłem, dopóki nie zainstalowałem libopenjp2-7-devi nie skonfigurowałem ponownie; jest całkiem możliwe, że działało tylko z pierwszą biblioteką lib.

Poza tym ./configure, makei make installznalazłem, że muszę (jak zasugerowano w docs) do „skonfigurować linker dynamiczny”: sudo ldconfig /usr/local/lib.

Teraz wynik /usr/local/bin/identify -list formatzawiera:

  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
Dzięki za to. Niestety nadal mam problemy! Zainstalowałem libopenjp2-toolsi libopenjp2-7-devużywałem apt-get, potem zbudowałem ze źródła, a potem uruchomiłem sudo ldconfig /usr/local/lib. (Innymi słowy, postępowałem zgodnie z dokumentami). STILL nie JP2. Argh! Wchodzi mi to w pamięć. Na wszelki wypadek ponownie przeprowadzę ten proces.
arokath

Wciąż nie ma szczęścia. Zauważyłem, że podczas działania ./configuresprawdza JP2 i nie znajduje go: „Sprawdzanie LIBOPENJP2 ... nie” . Jako bonus, teraz nie działa ogólnie dla konwersji JPEG. Kiedy próbowałem convert in.png out.jpg, tworzy plik, ale jest nieprawidłowy - jest to plik PNG tylko z rozszerzeniem jpg. Nie wiem, dlaczego JPEG miałby nagle zostać zepsuty, kiedy skompilowałem ze źródła!
arokath

Spróbuj uruchomić „apt-get build-dep imagemagick”, aby zainstalować biblioteki wymagane przez imagemagick (będą to te, z którymi został zbudowany w wydaniu, więc nadal będziesz potrzebować openjp2)
cbz
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.