ITunEsTooLってC#アプリをノリで作った。
能力が無い癖にノリで作ったから悲惨。
どう変更していったか以下の記載。
・処理
ダウンロードした画像が10K以下だったら画像を破棄。
10K以上だったら取得。
で画像を確認してもらってオッケイだったら保存って流れ(ココは面倒だから書かない。
要はそこそこの画像を確認して納得したら保存的な流れ。
・最初
WebClient wc = new WebClient(); wc.DownloadFile(URL, Filename); FileInfo fi = new FileInfo(Filename); if (fi.Length < 10000) { //ココでファイル削除 } wc.Dispose();
消すかも知れない画像をファイルに落としてる時点でクソ
・後
WebClient wc = new WebClient(); byte[] pic = wc.DownloadData(URL); if (pic.Length > 10000) { using (MemoryStream st = new MemoryStream(pic)) try{ using (Image imgSrc = Image.FromStream(st)) { Image IMG = new Bitmap(imgSrc); } } catch (ArgumentException) { //違うURL検索 } //画像保存(IMG.Save)やらなんやら } wc.Dispose();
ArgumentExceptionはたまにDownloadDataが機能しないときがあって
例外(使用されたパラメーターが有効ではありません。)が発生するからその対処として。
FromStreamしたImageでSaveするとの例外(GDI+ で汎用エラーが発生しました。)が
発生する場合がある。
対処法がココに書いてあって
別のBitmapに対処するとオッケイみたい。
ってかURL上の画像のファイルサイズって取得出来んのかな?