3種類あるPNGの判定方法

Macintosh

png-icon

PNG-8、PNG-24、PNG-32と全部で3種類もある(!)PNGを、Macで見分ける方法をまとめてみた。よろしければ何かの足しにして下さい。

スポンサーリンク

まずはお礼から

この記事を書くにあたり大いに参考にさせていただいたのは、海上忍さんが書かれたこちらの記事です。ありがとうございます!

実は種類がある「PNG」の見分けかた

また、別記事のコメント欄からこの記事を書くためのヒントを与えてくれた、読者のみなっちさん、マジでありがとう!

高画質で小容量の画像をブログに掲載する方法

みんな結論を先に知りたいと思うので、主な端末で作成したPNGの種類をお伝えしましょう。

主な端末で作成したPNGとその種類

  • iPhoneやiPadのスクリーンショット PNG-24
  • Androidのスクリーンショット PNG-24
  • Macの「プレビュー」で書き出したPNG PNG-24
  • Macのスクリーンショット PNG-32
  • Apple Watchのスクリーンショット PNG-32

Apple WatchのスクリーンショットがPNG-32というのがやや意外ですな。

スクリプトを用意する

以下のコマンドをコピーし「mi」などのテキストエディターでテキストファイルに保存する。保存時のエンコーディング形式は「UTF-8」。ファイル名は任意なので、ここでは「png-check.rb」とした。保存場所も任意なので、ここではデスクトップに保存した。

# -*- coding: utf-8 -*-
require “stringio”
pngname = ARGF.filename
image = open(pngname, “rb”)

sign = image.read(8)
length = image.read(4).unpack(“>N”)[0]
name = image.read(4)
data = image.read(length)

ihdr = StringIO.new(data)
width = ihdr.read(4).unpack(“>N”)[0]
height = ihdr.read(4).unpack(“>N”)[0]
bit_depth = ihdr.read(1).unpack(“h”)[0].to_i
color_type = ihdr.read(1).unpack(“h”)[0].to_i
alpha = `/usr/bin/sips –getProperty hasAlpha ‘#{pngname}’ | sed -n ‘2,2p’`

puts “横幅 %4d” % width
puts “高さ %4d” % height
puts “ビット深度 %4d” % bit_depth
puts “カラータイプ %4d” % color_type
puts “αチャンネル %4s” % alpha

「実は種類がある『PNG』の見分けかた」より引用しておりますm(_ _)m

PNGを用意する

判定したいPNGに任意のファイル名を付け、任意の場所に置く。ここではファイル名を「hoge.png」とし、作業しやすいようにPNGはデスクトップに置いた。

「ターミナル」からコマンドを入力する

「ターミナル」アプリを開いたら「$」の後ろに「ruby」と入力し、さらに先ほど保存したテキストファイルの名前「png-check.rb」と、判定したいPNGのファイル名「hoge.png」を以下のように入力する。作業するディレクトリは必要に応じて変更してね。

ruby png-check.rb hoge.png

returenキーを押し、カラータイプを見る

最後にreturnキーを押すと、ターミナルに結果が表示される。PNGの種類は「カラータイプ」の右の数字で判定できる。サンプルのPNGはカラータイプが2。下の表と照合するとPNG-24ということが分かる。これでいつでも自分でチェックできるね。みんなもやってみよう!

カラータイプとPNGの種類と色数


PNG-8
最大256色


PNG-24
1678万色


PNG-32
280兆色

コメント

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