2016-07-11 6 views
0

나는 네트워크 드라이브의 파일/폴더 시스템에서 그림의 품질을 줄이는 임무를 맡았습니다.사본을 만드는 대신 이미지를 저장하는 방법은 무엇입니까?

코드 :

Dim bmp1 As New Bitmap("U:\Image1.jpg") 
    Dim jpgEncoder As ImageCodecInfo = GetEncoder(ImageFormat.Jpeg) 
    Dim myEncoder As System.Drawing.Imaging.Encoder = System.Drawing.Imaging.Encoder.Quality 
    Dim myEncoderParameters As New EncoderParameters(1) 

    Dim myEncoderParameter As New EncoderParameter(myEncoder, 50&) 
    myEncoderParameters.Param(0) = myEncoderParameter 
    bmp1.Save("U:\Image1.jpg", jpgEncoder, myEncoderParameters) 

나는 다음과 같은 오류가 발생합니다 : "일반 오류는 GDI +에서 발생". 다른 파일로 복사하는 대신 저장하는 방법이 있습니까?

미리 감사드립니다.

+1

파일은 비트 맵을 처리 할 때까지 잠긴 상태로 유지됩니다. 당신은 "... jpg.new"에 저장하고, 처분 한 다음, 원본을 삭제하고, 새 것으로 이름을 바꿀 수 있습니다. 코드는 표시되지 않습니다. 그러나 – Plutonix

+0

충분히 간단합니다. –

답변

0

코드의 첫 번째 줄은 bmp1이 처리 될 때까지 파일을 잠급니다. 그래서 원래 경로에 저장할 수 없습니다.

' 
    ' 
    bmp1.Save("U:\Image1.jpg", jpgEncoder, myEncoderParameters) 
    bmp1.Dispose() 
:이 원본 파일 경로에 직접 저장할 수 있습니다 사용

Dim bmp1 As Bitmap 
    Using bmpTmp As New Bitmap("U:\Image1.jpg") 
     bmp1 = New Bitmap(bmpTmp) 
    End Using 

: 여기

내가 실제로 파일을 잠그지 않고 파일에서 이미지를로드하는 데 사용하는 방법

도움이 되길 바랍니다.