[ImageMagick/libopenjp2] jp2をjpgに変換する方法

PC全般 TIPS

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の高圧縮率の凄さを実感。

ブログ・ランキングに参加しています。ポチっと押してから去って頂く方に感謝です。ありがとうございます。
ブログランキング・にほんブログ村へにほんブログ村


人気ブログランキング

タイトルとURLをコピーしました