ICT

PNGファイル内の幅と高さを編集する

投稿日:

1. はじめに

PNGファイル内には、その画像の幅と高さの情報が埋め込まれています。

この部分の値を変える方法について説明します。

2. PNGファイルの構成

PNGファイルは、先頭から以下の構成になっています。

  1. PNG ファイルシグネチャ(8バイト)
  2. チャンク
  3. チャンク
  4. (任意個のチャンクが続きます)

チャンク1つ分には、先頭から順番に以下の情報が入っています。

  1. チャンクデータの長さ(4バイト)
  2. チャンク形式(4バイト)
  3. チャンクデータ(長さは「チャンクデータの長さ」で指定される)
  4. このチャンクのCRC(4バイト)

チャンクにはいろいろな種類がありますが、必須なチャンクがいくつかあります。

その1つが、IHDR(イメージヘッダ)チャンクで、この中に「画像の幅」「画像の高さ」が入っています。

IHDRは1つ目のチャンクであり、そのチャンクデータにセットされる項目は以下の通りです。

幅:                4 bytes
高さ:              4 bytes
ビット深度:        1 byte
カラータイプ:      1 byte
圧縮手法:          1 byte
フィルター手法:    1 byte
インターレース手法:1 byte

(引用元:PNG 仕様書: チャンク仕様書

3. IHDRチャンク

以下は、とあるPNGファイルをバイナリエディタで開いたところです。

先頭に PNGファイルシグネチャがあり、その直後に IHDRチャンクが配置されています。

IHDR の場合、先ほど書いた通り、チャンクデータの先頭に幅(4バイト)、高さ(4バイト)が入っています。

この画像の場合、幅には「00 00 01 CF」高さには「00 00 01 7B」がセットされていますが、これはそれぞれ10進数で「463」と「379」です(単位はピクセル)。

4. バイナリエディタで幅と高さを編集して保存する

ここで使っている HxD というバイナリエディタの場合、上書きした箇所をクリックして、そのまま文字を上書き入力することができます。

その後、画面上部にある [上書き保存] アイコンをクリックします。

これで、元のファイルが上書きされました。

「幅」と「高さ」の両方を、「FF FF FF FF」で上書きしました。
※ 先ほどとは違うファイルです。

5. 参考

📂-ICT

執筆者:labo


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

ネットにおけるプライバシーについて

目次1. 基本的なこと2. SNSやブログで情報発信する時に気を付けること3. 個人を特定することにつながる情報4. 画像をアップロードする場合5. 配達物の宛先ラベル6. 関連記事 1. 基本的なこ …

no image

情報リテラシーに関する記事

目次一般インターネット上の情報についてOSセキュリティ 一般 外気温を測ってホームページで公開すると気象庁から怒られる件 – Qiita 情報を公開するにも制限のある場合がある例 インター …

ICTリテラシー

Yahoo! JAPAN のアカウントを作る際には余計なサービスに登録しないよう注意しましょう

Yahoo! JAPAN のアカウントを作る際、「Tポイント利用手続き」という画面が挟み込まれていますので、必要ない人や心当たりのない人は登録しないようにしましょう。 「Tポイント利用手続き」というの …

Fire

Fire タブレットで Google Playストアを使う場合の認証に関する疑問点

インターネットで検索すると、Fire タブレットに Google Playストアをインストールして利用する方法がいろいろと見付かります。 Amazon のアプリストアはアプリの種類が少ないですし、開発 …

キーボードを使う時の2つのホームポジション

キーボードを使う際、どこに手を置くか?についてです。 目次2つのホームポジション1. 文章を入力する時のホームポジション手の置き方2. OS、アプリケーション、ファイル・フォルダを操作する時のホームポ …