C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Windowsのペイントで画像保存した時の圧縮について

[トピック内 11 記事 (1 - 11 表示)]  << 0 >>

■85348 / inTopicNo.1)  Windowsのペイントで画像保存した時の圧縮について
  
□投稿者/ Tiff不明 (1回)-(2017/10/12(Thu) 16:27:49)

分類:[(わからない)] 

お世話になっております。

Windows7にて、ペイントを使用したときに気になったことがあったので質問させてください。

ペイントでTiff画像を保存した際に、保存画像のプロパティを見ると圧縮の欄が"LZW"となっていました。

LZWについて調べてみたところ、解凍する際の前提条件について気になることがありました。
解凍するには、1文字のサイズが分かっている、可変幅コードの使用有無などの条件が分かっている必要があるとのことでした。

それならば、なぜ圧縮した画像を他のソフト等でも開けるのでしょうか。

Tiffヘッダに情報が格納されているのかと思い、Tiffヘッダについても調べてみたのですが、Tiffヘッダの内容にはLZWの情報が入るような部分がありませんでした。

しかし画像が開ける以上は、どこかに情報が格納されているものと思います。

そこで疑問なのですが、Tiffヘッダの中身を見た時(例えばバイナリエディタで開いた時)に、LZW関連の情報が入っているのはどのような領域なのでしょうか。

また、LZWで圧縮した画像ファイルはヘッダも圧縮されているのでしょうか。
それとも、ヘッダは圧縮前のままで、画像データの部分だけが圧縮されているのでしょうか。

ご存知の方ご教授お願いします。

引用返信 編集キー/
■85349 / inTopicNo.2)  Re[1]: Windowsのペイントで画像保存した時の圧縮について
□投稿者/ furu (123回)-(2017/10/12(Thu) 16:52:44)
No85348 (Tiff不明 さん) に返信

くわしくありませんが
Wikiには

LZWを採用している多くのフォーマットでは
この情報はフォーマット仕様に盛り込まれているか
圧縮データのヘッダーにこれらの情報のための
明確なフィールドが確保されている。

とあります。
ヘッダーに情報が入ってるんじゃないですか。
引用返信 編集キー/
■85352 / inTopicNo.3)  Re[2]: Windowsのペイントで画像保存した時の圧縮について
□投稿者/ Tiff不明 (2回)-(2017/10/12(Thu) 17:42:03)
No85349 (furu さん) に返信

ご回答ありがとうございます。

> LZWを採用している多くのフォーマットでは
> この情報はフォーマット仕様に盛り込まれているか
> 圧縮データのヘッダーにこれらの情報のための
> 明確なフィールドが確保されている。
>
> とあります。
> ヘッダーに情報が入ってるんじゃないですか。

私も調べた際にWikiは見たので、ヘッダに情報が入っているものと考えていたのですが、
Tiffヘッダについて調べた際に、LZWの情報が入るような領域についての情報が見つかりませんでした。
なので、ヘッダに情報が入っていることは確かだと思うのですが、明確な場所が分からない状態です。

引用返信 編集キー/
■85357 / inTopicNo.4)  Re[3]: Windowsのペイントで画像保存した時の圧縮について
□投稿者/ Azulean (878回)-(2017/10/12(Thu) 23:44:15)
TIFF の仕様書を読みました?

Section 13: LZW Compression - The Algorithm
> The TIFF implementation uses variablelength codes, with a maximum code length of 12 bits.
> This string table is different for every strip and does not need to be reatained for the decompressor

文字列テーブルは Strip ごとに違うということなので、TIFF ヘッダー内には存在しません。
ヘッダーではなく、いわゆる Body 部分にあるということです。
引用返信 編集キー/
■85358 / inTopicNo.5)  Re[4]: Windowsのペイントで画像保存した時の圧縮について
□投稿者/ Tiff不明 (3回)-(2017/10/13(Fri) 09:05:46)
No85357 (Azulean さん) に返信

ご回答ありがとうございます。

> TIFF の仕様書を読みました?
>
> Section 13: LZW Compression - The Algorithm
>>The TIFF implementation uses variablelength codes, with a maximum code length of 12 bits.
>>This string table is different for every strip and does not need to be reatained for the decompressor
>
> 文字列テーブルは Strip ごとに違うということなので、TIFF ヘッダー内には存在しません。
> ヘッダーではなく、いわゆる Body 部分にあるということです。

Tiffの仕様書は見ていませんでした。
LZWの情報が入っているのは、ヘッダ内ではないのですね。
Body部分についてまだ良く分かっていないので、まずはその辺りを調べてみようと思います。

引用返信 編集キー/
■85419 / inTopicNo.6)  Re[5]: Windowsのペイントで画像保存した時の圧縮について
□投稿者/ Tiff不明 (4回)-(2017/10/19(Thu) 16:15:42)
お世話になっております。

前回の投稿からTiffのBody部分について調べていたのですが、疑問を解決できるような情報が得られませんでした。

Body部分の内容は、どのようにして解析するのでしょうか。
そもそもBody部分 = 画像データ部分と勝手に解釈して調べていましたが、認識はそれであっているのでしょうか。
調べた限りでは、画像データが入っている部分にはそれらしいものを見つけることが出来ませんでした。

また、Tiffの仕様書も探してみたのですが、見つかりませんでした。
こちらについても、仕様書が置いてあるサイト等ご存知でしたら教えていただきたいです。
引用返信 編集キー/
■85420 / inTopicNo.7)  Re[6]: Windowsのペイントで画像保存した時の圧縮について
□投稿者/ とっちゃん (468回)-(2017/10/19(Thu) 16:37:14)
No85419 (Tiff不明 さん) に返信

> また、Tiffの仕様書も探してみたのですが、見つかりませんでした。
> こちらについても、仕様書が置いてあるサイト等ご存知でしたら教えていただきたいです。

http://www.verypdf.com/document/tiff6/
こちらが仕様書になります(日本の画像フォーマットじゃないので、仕様書は日本語ではありません)。

http://www.snap-tck.com/room03/c02/cg/cg.html
検索してたら見つけたので、日本語の画像フォーマットの解説ページも載せておきます。

引用返信 編集キー/
■85425 / inTopicNo.8)  Re[7]: Windowsのペイントで画像保存した時の圧縮について
□投稿者/ Tiff不明 (5回)-(2017/10/19(Thu) 17:25:17)
No85420 (とっちゃん さん) に返信
> http://www.verypdf.com/document/tiff6/
> こちらが仕様書になります(日本の画像フォーマットじゃないので、仕様書は日本語ではありません)。
>
> http://www.snap-tck.com/room03/c02/cg/cg.html
> 検索してたら見つけたので、日本語の画像フォーマットの解説ページも載せておきます。
>

情報ありがとうございます。
早速見てみようと思います。
引用返信 編集キー/
■85801 / inTopicNo.9)  Re[8]: Windowsのペイントで画像保存した時の圧縮について
□投稿者/ Tiff不明 (6回)-(2017/11/25(Sat) 23:13:18)
お世話になっております。

かなり間が空いてしまいましたが、TiffのBody部分について調べてみました。
しかし、Body部分にある情報の取得方法がわかりませんでした。
現在、検証用にC#で画像をbyte配列に読み込んで情報を取得してみようとしているのですが、
情報の取得方法さえわかっていない状態です。

Tiffの画像情報(LZWの情報など)を取得するには、Body部分のどのような情報を見ればよいのでしょうか。
以前教えていただいたサイト等を見る限りだと、Tiffヘッダの情報は決まったバイト値のパターンの後に
各情報が格納されているようなのですが、Body部分についても同様なのでしょうか。

返答が遅れた上に未だにわからないことばかりですが、どなたかご教授をお願い致します。

引用返信 編集キー/
■85802 / inTopicNo.10)  Re[9]: TIFFの構造
□投稿者/ Azulean (906回)-(2017/11/26(Sun) 00:32:40)
2017/11/26(Sun) 01:22:49 編集(投稿者)

No85801 (Tiff不明 さん) に返信
> かなり間が空いてしまいましたが、TiffのBody部分について調べてみました。
> しかし、Body部分にある情報の取得方法がわかりませんでした。
> 現在、検証用にC#で画像をbyte配列に読み込んで情報を取得してみようとしているのですが、
> 情報の取得方法さえわかっていない状態です。

どの程度、TIFF 仕様書を読み込んでいるのですか?理解されているのですか?
私が言っていた「Body 部分」は TIFF 仕様書のどの文言がより近いものか、検討はついていますか?教えてください。

Image File Directory の構造がどうなっているか、タグに対応するデータの読み方は理解されていて、着目すべきタグの選定はできていますか?
(実際に押さえておくべきタグの数は知れていますが…)

すでに理解されているのでしたら、どのあたりがわかっていないかを具体的に示していただいた方が話は速いと思います。
その場合、コミュニケーションを円滑に進めるためにも、できるだけ、TIFF の仕様書にある文言を使ってください。


> Tiffの画像情報(LZWの情報など)を取得するには、Body部分のどのような情報を見ればよいのでしょうか。

画像情報は TIFF ヘッダー(正確には Image File Directory 内のタグとその値)を見るべきです。
LZW 圧縮は画像データの1ラインごとに異なるテーブルとなりうるフォーマットなので、何を欲しているか不明です。
仮に1ラインごとに異なるそれらを得て、何をしたいのか?がよくわかっていませんので…。
LZW 圧縮周りにこだわるなら、TIFF 仕様書の Section 13: LZW Compression をじっくり読むことは必要だと思います。
引用返信 編集キー/
■85803 / inTopicNo.11)  Re[10]: TIFFの構造
□投稿者/ Azulean (907回)-(2017/11/26(Sun) 08:32:05)
メモ

・エンディアンの判別
・TIFF バージョンのチェック
・IFD のオフセットの読み込み
・IFD の読み込み(&マルチページ対応が必要なら続きの IFD も)
・Strip に関する情報の解釈・読み込み
・Strip の読み込み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ