JPEG 2000(jp2)は高圧縮率で非常に優れており、個人的には今後の画像フォーマットの標準になると思っていますが、いかんせん現時点では限られたビューワーしか対応していないので使いにくいです。
というわけで、jp2をjpgに変換する方法の備忘録。
動作環境
動作環境はLinux (Ubuntu 20.04 LTS)です。
jj@jj-Ubuntu:~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.4 LTS Release: 20.04 Codename: focal
jp2をpngやjpgに変換する方法
現状はliboenjp2でjp2→png変換してから、ImageMagickでpng→jpg変換しています。
これが最適解ではないはずなんですが、ダイレクトにjpg変換できる方法にたどり着いたらリライトするという事で、とりあえずメモ代わり。
libopenjp2
liboenjp2のインストール
jj@jj-Ubuntu:~$ sudo apt-get install libopenjp2-tools
libopenjp2のバージョンは、
jj@jj-Ubuntu:~$ dpkg -l |grep libopenjp2 ii libopenjp2-7:amd64 2.3.1-1ubuntu4.20.04.1 amd64 JPEG 2000 image compression/decompression library ii libopenjp2-tools 2.3.1-1ubuntu4.20.04.1 amd64 command-line tools using the JPEG 2000 library
ImageMagick
ImageMagickのインストール
jj@jj-Ubuntu:~$ sudo apt-get install imagemagick
ImageMagickのバージョンは
jj@jj-Ubuntu:~$ dpkg -l |grep imagemagick ii imagemagick 8:6.9.10.23+dfsg-2.1ubuntu11.4 amd64 image manipulation programs -- binaries ii imagemagick-6-common 8:6.9.10.23+dfsg-2.1ubuntu11.4 all image manipulation programs -- infrastructure ii imagemagick-6.q16 8:6.9.10.23+dfsg-2.1ubuntu11.4 amd64 image manipulation programs -- quantum depth Q16
convertのバージョンは
jj@jj-Ubuntu:~/work$ convert --version Version: ImageMagick 6.9.10-23 Q16 x86_64 20190101 https://imagemagick.org Copyright: © 1999-2019 ImageMagick Studio LLC License: https://imagemagick.org/script/license.php Features: Cipher DPC Modules OpenMP Delegates (built-in): bzlib djvu fftw fontconfig freetype jbig jng jpeg lcms lqr ltdl lzma openexr pangocairo png tiff webp wmf x xml zlib
フォーマット変換方法
libopenjp2のopj_decompress を使い、一旦pngに変換します。
opj_decompress -i JP 2000ファイル.jp2 -o PNGファイル.png
jj@jj-Ubuntu:~/work$ ll 合計 1628 drwxrwxr-x 2 yk yk 4096 7月 13 15:41 ./ drwxr-xr-x 21 yk yk 4096 7月 13 15:53 ../ -rwxrwx--- 1 yk yk 1658859 2月 26 2019 001.jp2* jj@jj-Ubuntu:~/work$ opj_decompress -i 001.jp2 -o 001.png [INFO] Start to read j2k main header (85). [INFO] Main header has been correctly decoded. [INFO] No decoded area parameters, set the decoded area to the whole image [INFO] Header of tile 1 / 1 has been read. [INFO] Stream reached its end ! [INFO] Generated Outfile 001.png decode time: 1008 ms jj@jj-Ubuntu:~/work$ ll 合計 27000 drwxrwxr-x 2 jj jj 4096 7月 13 15:56 ./ drwxr-xr-x 21 jj jj 4096 7月 13 15:53 ../ -rwxrwx--- 1 jj jj 1658859 2月 26 2019 001.jp2* -rw-rw-r-- 1 jj jj 25979068 7月 13 15:57 001.png
jp2のバーミッションが770なのは気にしない。。
次に、ImageMagickのconvertコマンドを使ってjpgに変換。
jj@jj-Ubuntu:~/work$ ll 合計 27000 drwxrwxr-x 2 jj jj 4096 7月 13 15:56 ./ drwxr-xr-x 21 jj jj 4096 7月 13 15:53 ../ -rwxrwx--- 1 jj jj 1658859 2月 26 2019 001.jp2* -rw-rw-r-- 1 jj jj 25979068 7月 13 15:57 001.png jj@jj-Ubuntu:~/work$ jj@jj-Ubuntu:~/work$ convert 001.png -resize 50% 001.jpg jj@jj-Ubuntu:~/work$ ll 合計 29136 drwxrwxr-x 2 jj jj 4096 7月 13 15:57 ./ drwxr-xr-x 21 jj jj 4096 7月 13 15:53 ../ -rwxrwx--- 1 jj jj 1658859 2月 26 2019 001.jp2* -rw-rw-r-- 1 jj jj 2185313 7月 13 15:57 001.jpg -rw-rw-r-- 1 jj jj 25979068 7月 13 15:57 001.png jj@jj-Ubuntu:~/work$
サイズ変更不要なら、
convert PNGファイル.png JPGファイル.jpg
でOK。
サイズ変更するなら、-resizeオプションで指定。
例えば50%に縮小するなら、
convert pngファイル.png -resize 50% 001.jpg
convertには色々とオプションがあるので、詳しくは imagemagick.org を見て下さい。
こうやって見ると、改めてjp2の高圧縮率の凄さを実感。
ブログ・ランキングに参加しています。ポチっと押してから去って頂く方に感謝です。ありがとうございます。
にほんブログ村