0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PNG⇛JPEG変換メモ(Python)

Posted at

やりたかったこと

PNG⇛JPEGをする。
今回問題となったのは、PNG画像の拡張子をJPEGに変えてるだけで、内部情報はPNGのままで怒られてしまった。
そのため、JPEGにしっかり変換する(新卒並感)

解決

以下OpencvでJPEG変換するコード。今回エラーとなっていたのは、imwriteする時に保存先をしている第一引数を変数でhogehoge.pngを指定し、無限ループが起きていた。(for文で第四引数のクオリティを下げて画像サイズを小さくしていた。)

第一引数の拡張子は.jpgにしよう(戒め)

# 該当PNG画像
image = cv2.imread('hoge.png')

# JPG画像として保存する
cv2.imwrite('hoge.jpg', image, [int(cv2.IMWRITE_JPEG_QUALITY), 95])

しかし、これでちゃんと中身までJPEGに変換されているかは確認できない。怪しいし、動作確認でのエビデンスはどうしよう・・・・

というわけで下記サイトに出会った。どうやらバイナリの先頭部分(シグネチャ)で判定できるらしい。

# ファイル読み込み
with open(image_file_path, mode='rb') as f:
    image = f.read()

# バイナリ変換した画像ファイルをターミナルに表示してみる
print("hoge.jpeg =>" + str(image[:8]))

先頭が「\xff\xd8」であればJPEG、「\x89PNG\r\n\x1a\n」であればPNGとなっているようなので、そちらをコンソールで確認。

以下の記事が詳しそうだったので後々読みたい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?