SSブログ

ZIP入りPNG - PNGフォーマットを調べた [ざれごと]このエントリーを含むはてなブックマーク#

このBLOGでは、画像ファイルを置く場所が1GB用意されているのですが、プロジェクト・アーカイブなどのZIPファイルを置くことはできません。 拡張子を偽ってZIPをJPGとして置くことは可能ですが、サムネイルの作成でエラーが起こってしまい調子がよくありません。 もし、正式な画像フォーマットファイルにZIPを埋め込む事ができれば、誰が見てもそれは画像ファイルであり、BLOGにアップロードしても文句は言われないはずです。 ちょっと、調べるだけ調べてみますか。

ビットマップにZIPを埋め込む案

最初に考えたのが、画像のビットマップデータにそのままZIPを埋め込む方法です。 きっとBMP形式だと簡単にできるのだろうと思います。 画像の横幅を512ピクセル固定にしてピクセルあたり8ビットのグレー階調を持たせると、 100KBのファイルは縦200ピクセルの画像になります。 実際には、ファイル名と長さを入れるための管理領域が追加されます。

PNGを使う場合も、同じように画像データとして埋め込んでしまえば良さそうです。 そのためには、PNGフォーマットを調べなくては。

PNGフォーマットを調査した

というわけで、 W3CのPNGページに フォーマットを調べに行きました。 仕様書は、W3.orgにあるのですね。 これによると、PNGフォーマットは、チャンクと呼ばれるデータの集まりで表現されています。 また、画像データは、フィルタリングや圧縮を経てストリームに変換されてるようです。 けっこう、面倒ジャン。

チャンクとしてZIPを埋め込めるか?

ここで、画像データにZIPを埋め込むのではなくチャンクの一つとしてZIPを埋め込めないかという 考えが浮かんできました。 これなら、必要なのはCRCを計算する機能だけで済みます。 とはいっても、画像データ部分には、ダミー・データが必要です。 チャンク名は、"nzIp"でいかがでしょう。 画像が編集されたとしても継承されるプライベート・チャンクです。 これが画像データとして受け入れてもらえるかは、作ってみないとわかりませんね。


あ、もちろん、どなたかサクッと作って下さってもかまいませんよ。


nice!(0)  コメント(4)  トラックバック(0)  このエントリーを含むはてなブックマーク#

nice! 0

コメント 4

noritan

先日、徘徊していて、こんなソフトウェアがあることを知りました。

http://www.hatsune.cc/labo/hatsune/
PNG 擬装ソフト「初音(HATSUNE)」Ver2.00

まさに、この記事で考えていた「PNGファイルに別のファイルを埋め込む」というコンセプトの作品です。しかも、最終更新2003年の作品です。これを使えば、BLOGへのアップロードも怖くありません。

でも、最近のso-netは、単なる「拡張子偽装PNGファイル」でも受け入れてくれるので、もう必要はないかな。

by noritan (2008-08-28 12:25) 

hamayan

そうそう、次はファイルサイズ偽装WMVのアップロードでお願いします。
1Gも容量が有るとか言っているくせに、、、ケチ。
by hamayan (2008-08-28 17:14) 

昔の人

2000年頃までは、当たり前の技術でしたよ。
それどころか、大量のファイルを分割して、画像に偽装してアップロード。
誰が見てもアイドル画像集にしか見えないけど、集めて結合すると、数100MBのデータになったりとか。CRC も一緒に出してくれるから、破損があったらすぐわかったり。
その手のソフトが数十できていて、どれで分割偽装されたのかを確認するのが大変でした。

うめーんとか、うめーこのみかんとかも、インプラント用ソフトだったはず。
by 昔の人 (2016-04-12 11:43) 

徘徊していたらたどりつきました。

goolge のブロガーでいまだにzipなどをuploadできません。
いろいろ調べたら、 どうも skydriveなどを使えということもみたいです。
時代はかわりました。 あれから、  2009年9月依頼です。
また、マイコンを趣味でいじくり始めました。 
ずーっと仮想化とかやってたのですが、やはり何か動かしたくなってしまい
再開、 わからない時には聞きますので教えてください。
by 徘徊していたらたどりつきました。 (2016-05-27 12:20) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。