2016-07-11 2 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. Вот почему вы не можете сохранить исходный путь.

Вот как я использую, чтобы загрузить изображение из файла без фактического блокирования файла:

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

С помощью этого вы сможете сохранить непосредственно к исходному пути к файлу:

' 
    ' 
    bmp1.Save("U:\Image1.jpg", jpgEncoder, myEncoderParameters) 
    bmp1.Dispose() 

Надеюсь, что поможет :)