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

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

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

Re[2]: Image.SaveでICONファイルについて。


(過去ログ 92 を表示中)

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

■54859 / inTopicNo.1)  Image.SaveでICONファイルについて。
  
□投稿者/ たけたけ (4回)-(2010/11/07(Sun) 12:09:00)

分類:[VB.NET/VB2005 以降] 

お世話になります。
ICONファイルの保存について助言をいただきたいのですが。

環境 Windows7 64bit VS2010 初心者です。よろしくお願いします。

Image.SaveでICONファイルを保存する場合、VB2005ではPNGファイルとして保存されるようですが、VB2010ではどうなのでしょうか?

Image.Save("ファイル名", Imaging.ImageFormat.Icon)で試してみました。
結果として、"ファイル名.ico"というファイルが作成され、ファイルの種類もアイコンになっていました。
ただ、フォルダー内の表示(すみません、言葉がわからなくて・・・、一覧、詳細ではない表示です。)で見ると、アイコンが白いノートみたいなものになっていて、保存した画像になっていません。でも、ペイント、Windowsフォトビューアでは保存した画像が見られます。この拡張子を"Png"に変えると、保存した画像がアイコンで見られます。

また、Image.Save("ファイル名", Imaging.ImageFormat.Png)で保存すると、画像がちゃんとアイコンで見られます。

このフォルダーに他で作った"ico"ファイルを移動すると、画像がアイコンで見られます。

やはり、Image.Saveで作った"ico"ファイルは"Png"ファイルなのでしょうか。

引用返信 編集キー/
■54860 / inTopicNo.2)  Re[1]: Image.SaveでICONファイルについて。
□投稿者/ Azulean (637回)-(2010/11/07(Sun) 12:26:37)
No54859 (たけたけ さん) に返信
> Image.SaveでICONファイルを保存する場合、VB2005ではPNGファイルとして保存されるようですが、VB2010ではどうなのでしょうか?
変わってないはずです。

> 結果として、"ファイル名.ico"というファイルが作成され、ファイルの種類もアイコンになっていました。
このファイルの種類は、拡張子(.ico)の部分だけで判断しています。
なので、これができただけできちんと保存できたわけではありません。

> ただ、フォルダー内の表示(すみません、言葉がわからなくて・・・、一覧、詳細ではない表示です。)で見ると、
> アイコンが白いノートみたいなものになっていて、保存した画像になっていません。
> でも、ペイント、Windowsフォトビューアでは保存した画像が見られます。
> この拡張子を"Png"に変えると、保存した画像がアイコンで見られます。
要するに、アイコンではなく、PNG で保存されているわけです。
フォトビューアなどは拡張子で判断せず、ファイルを読み込んで判断しているので表示できますが、エクスプローラの縮小表示は正しいアイコンじゃなければならないのでしょう。

> また、Image.Save("ファイル名", Imaging.ImageFormat.Png)で保存すると、画像がちゃんとアイコンで見られます。
それはアイコンでなく、単なる画像です。

> やはり、Image.Saveで作った"ico"ファイルは"Png"ファイルなのでしょうか。
そうなるはずです。
引用返信 編集キー/
■54861 / inTopicNo.3)  Re[1]: Image.SaveでICONファイルについて。
□投稿者/ Hongliang (736回)-(2010/11/07(Sun) 12:32:08)
System.Drawing が利用している GDI+ の画像エンコーダは、今のところ icon エンコーダを含んでいません。
Image.Save メソッドはサポートしていない形式の場合強制的に png 形式で保存を行います。
引用返信 編集キー/
■54862 / inTopicNo.4)  Re[2]: Image.SaveでICONファイルについて。
□投稿者/ たけたけ (6回)-(2010/11/07(Sun) 12:41:14)
2010/11/07(Sun) 14:22:48 編集(投稿者)

Azuleanさん、Hongliang さん
丁寧なご説明ほんとありがとうございました。
おかげさまで良くわかりました。

ファイルの種類のこと、フォトビューアのこと、GDI+ の画像エンコーダのこと、とても勉強になりました。

また困った時には、ぜひよろしくお願いします。
解決済み
引用返信 編集キー/
■54866 / inTopicNo.5)  Re[1]: Image.SaveでICONファイルについて。
□投稿者/ 魔界の仮面弁士 (1915回)-(2010/11/07(Sun) 17:05:25)
No54859 (たけたけ さん) に返信
> Image.SaveでICONファイルを保存する場合、
アイコンファイルを保存するのであれば、Image.Save(String, ImageFormat) メソッドではなく、
Icon.Save(Stream) メソッドを使う事ができます。ただしこの方法では、保存結果に
どの解像度・色数を含めるのかといった細かい指定が行えません。

アイコンファイルを正攻法で作ろうとする場合には、バイナリファイルとして
自身で構築することになりそうです。
http://hiroshi0945.seesaa.net/article/163971389.html
http://www.syuhitu.org/other/ico.html
http://msdn.microsoft.com/en-us/library/ms997538.aspx


> Imaging.ImageFormat.Icon
利用可能なコーデックの一覧は、
 ImageCodecInfo.GetImageEncoders()
 ImageCodecInfo.GetImageDecoders()
で得ることができますが、Icon 用の物はデコーダーしか無いようです。
http://support.microsoft.com/kb/316563/en-us
http://msdn.microsoft.com/ja-jp/library/bb882580.aspx

また、System.Windows.Media.Imaging の方を眺めてみても、
IconBitmapDecoder クラスは用意されているものの、
IconBitmapEncoder クラスは見当たりませんでした。
解決済み
引用返信 編集キー/
■54885 / inTopicNo.6)  Re[2]: Image.SaveでICONファイルについて。
□投稿者/ たけたけ (7回)-(2010/11/08(Mon) 14:13:01)
No54866 (魔界の仮面弁士 さん) に返信
大変ありがとうございます。

> アイコンファイルを保存するのであれば、Image.Save(String, ImageFormat) メソッドではなく、
> Icon.Save(Stream) メソッドを使う事ができます。ただしこの方法では、保存結果に
> どの解像度・色数を含めるのかといった細かい指定が行えません。
さっそくIcon.Saveを試させていただきます。

> アイコンファイルを正攻法で作ろうとする場合には、バイナリファイルとして
> 自身で構築することになりそうです。
うーん、とても難しそうです。でも、いずれ挑戦してみたいと思います。

その他、情報ありがとうございます。
とても勉強になりました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -