私はthis questionのように、.jpgsに.pngsのバッチを変換しようとしている:なぜ私のコードはGDI +で一般的なエラーをスローしますか?
For Each file As String In Directory.EnumerateFiles(path).Where(Function(s) s.EndsWith(".png"))
Dim newfile As String = IO.Path.Combine(newpath, IO.Path.GetFileNameWithoutExtension(file) & ".jpg")
Using png As Bitmap = Bitmap.FromFile(file)
Using jpg As New Bitmap(png.Width, png.Height)
Using g As Graphics = Graphics.FromImage(jpg)
g.Clear(Color.FromArgb(255, 212, 208, 200))
g.DrawImageUnscaled(png, 0, 0)
jpg.Save(newfile, ImageFormat.Jpeg)
End Using
End Using
End Using
Next
jpg.Save
への呼び出しは、しかし、GDI +で「一般的なエラー」と。もともと内側のUsing
ステートメントの外側では、私はthis answerとして内向きに移動しましたが、何も変更されませんでした。私はnewfile
に有効なパスが含まれていること、そしてプログラムにディレクトリへの書き込みアクセス権があることを確認しました。私は何が欠けていますか?
'newpath'は定数(異なる)ディレクトリで、' newfile'ではなく 'IO.Path.Combine'に渡されます。 – dlras2
@ダン:私は、 'newfile'で問題が発生しているのを見て、私を信じています。あなたはコードをテストすることができます。 'newpath'を' path'に置き換えるだけで、新しい 'jepg'ファイルが' Path'ディレクトリと同じディレクトリに追加されます。 –
@Dan: 'Path.Combine'は結合する文字列によって異なる動作をします。たとえば、 "C:\ testing \"と '' tested \ "を組み合わせると、' 'C:\ testing \ ''と '' testing \ "'と異なる文字列が得られます。 '" \ "'を文字列に... –