- - PR -
C# 複数の画像をサイズ変更するには?
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-01-15 18:17
フォルダー内の全部の画像のサイズ変更するプログラムを作ろうとしています。
「.NET TIPS 画像をファイルに保存するには?」の記事を参考にして作ってみたのですが、1枚の画像ファイルのサイズ変更は無事できました。 複数の画像のサイズ変更はされているのですが、複数のファイルパスをBitmap src = new Bitmap(a[i]);の部分に代入すると、デバックした後に使用されたパラメータが有効でありませんと言われてしまいます。 a[i]はフォルダー内の複数の画像のファイルパスが入っていて、lengthはファイルの数です。 Bitmapにいきなり複数の値を入れたのがまずいのかなと思っていますが、どうすればこのエラーが消えるのかがわかりません。 わかる方いらっしゃいましたら、ご教授よろしくお願いいたします。 for(i=0; i<length; i++){ Bitmap src = new Bitmap(a[i]); int width = src.Width / 2; int height = src.Height / 2; Bitmap dest = new Bitmap(src, width, height); dest.Save(a[i]+"2.jpg", ImageFormat.Jpeg); } | ||||||||||||
|
投稿日時: 2006-01-15 19:35
a[i]を設定するコードを記載ください。
_________________ IEEE-CSDP 2004-2007 | ||||||||||||
|
投稿日時: 2006-01-15 19:58
その時の a[i] の中身を式ウォッチで見てください。
Bitmap オブジェクトに複数の値なんて入ってますか? コードを見る限り、どちらかというと、src, dest を明示的に解放していない方が気になります。
エラーではなく例外じゃないんですか? a の型は何でしょうか? 当然、string でしょうけど、a の型についての記載がないため私には判りません。 と、このように情報が少ないです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-01-15 20:18
こういうことですかね?
仰られている 「使用されたパラメータが有効でありません」 使用されたファイルが画像ファイルではない可能性が高いと解釈してもいいでしょう、この場合は。隠し属性のファイルなどもあるのでループ時に画像ファイルかどうかをチェックするべきです(上記コードではswitch使ってますがtry - catchでチェックするほうがお得な気がします、まずコーディング楽ですしどんな拡張子でもOKですし。) それと
これで縮小できる(?)というのはびっくりですが、縮小時の方法など指定する場合Graphics使ったほうがお得な気がします。 ついでにJpegだけに対応するわけでは無いのであれば上記コードのように変換してあげましょう。 # といっときながら上記のコードで問題がないかちょっと自信なし。 _________________ 9uiet Design - http://quietdesign.rental.allinoneserver.net/ デザインにこだわったソフトの配布とプログラミングTipsの公開(予定)をしています。 9uiet Blog - http://seiga.blog44.fc2.com/ 笑ったことやプログラミングのことなど書 | ||||||||||||
|
投稿日時: 2006-01-15 23:06
iStationさん、じゃんぬねっとさん、清華さん、レスありがとうございます。
a[i]の型は、string[]です。a[i]の中には、フォルダ内の全部の画像ファイル(jpg)のファイルパスが入ってます。 forはフ ウォッチという部分には何も書かれていなかったみたいなのですが・・。 あとエラーではなく例外の間違いでした。 どういうことを説明すればいいのかもあんまりよくわかってなくてすみませんでした。 清華さんのおっしゃるとおり、隠しファイルによる例外でした。 落ち着いてちゃんと確認するべきでした。すみません。 解決しました。 みなさん、ありがとうございました。 [ メッセージ編集済み 編集者: ぶぎ 編集日時 2006-01-15 23:07 ] | ||||||||||||
|
投稿日時: 2006-01-15 23:26
GetFiles メソッドですが、パターン マッチングが使えますので、 その後の GetExtension などの検証は不要だと思います。 フォルダ内のすべてのファイルを取得する 拡張子がでたらめな場合も考慮して、必ず例外処理をやっておきしょう > ぶぎさん _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-01-16 08:12
これって拡張子1つにしか対応できなく無いですか? 複数の拡張子に対応できるのであればその方法を教えていただきたいです(過去調べたが僕の技量では見つけられなかった) _________________ 9uiet Design - http://quietdesign.rental.allinoneserver.net/ デザインにこだわったソフトの配布とプログラミングTipsの公開(予定)をしています。 9uiet Blog - http://seiga.blog44.fc2.com/ 笑ったことやプログラミングのことなど書 | ||||||||||||
|
投稿日時: 2006-01-16 09:42
あ、複数ファイルは定義できないんですね... 所詮、Win のワイルドカードだから... orz 使えるワイルドカード文字は * と ? のみ... そんなわけで負け惜しみメソッド。
これならば、拡張子が増えても変更は少ないですね (w _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
1