Member 13975729 Ответов: 1

Как сохранить изображение в папку после его преобразования?


Я пытаюсь сохранить изображение в папку после того, как оно было сохранено в памяти и преобразовано. Я не могу выяснить, как получить, что сделано.

Что я уже пробовал:

частное статическое изображение ScaleImage(Image image, int maxHeight)
{
двойная шкала;
если (изображение.Высота >= maxHeight) { масштаб = maxHeight / (двойное)изображение.Высота; }
else { scale = 1; }

Bitmap bmp = новое растровое изображение(изображение, преобразование.ToInt32(рис.Ширина * масштаб), конвертировать.ToInt32(рис.Высота * масштаб));

ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);
EncoderParameters jpgEncoderParameters = новые EncoderParameters(1);
jpgEncoderParameters.Param[0] = новый EncoderParameter(System.Рисование.Изображений.Кодировщик.качество, 100л);

MemoryStream ms = Новый Поток памяти();

bmp.Save(ms, jpgEncoder, jpgEncoderParameters);



верните изображение.FromStream(МС);
}

частный статический ImageCodecInfo GetEncoder(формат ImageFormat)
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();

по каждому элементу (ImageCodecInfo кодеки в кодеки)
{
if (кодек.FormatID == format.Guid) { возвращаемый кодек; }
}
возвращать null;
}
#endregion
частных статических недействительным Job_UpdateStaffDBPics(строка Лок)
{
DirectoryInfo diSource = новый DirectoryInfo(loc);


байт[] Pic = null;
byte[] StaffPicThumb = null;

foreach (FileInfo fi в diSource.Заражен())
{
пробовать
{
Файлового потока ФС = Fi интернет.OpenRead();
ImgSource образ = образ.FromStream(fs);
ImageConverter converter = новый ImageConverter();
Pic = (byte[])конвертер.ConvertTo(ScaleImage(imgSource, 600), typeof(байт[]));
StaffPicThumb = (byte[])конвертер.ConvertTo(ScaleImage(imgSource, 128), typeof(байт[]));

MemoryStream ms = новый MemoryStream(StaffPicThumb);
Image returnImage = изображение.FromStream(МС);

returnImage.Save("ConvertedImage", ImageFormat.Jpeg);

//Файл.Копия(returnImage)

по каждому элементу (ВАР пункт в пос)
{

}

Ящик для сообщений.Показать("Тест");
}
catch (Exception ex) { MessageBox.Показать(напр.сообщение); }
}
}
}

Patrice T

А у вас есть вопрос или проблема ?

1 Ответов

Рейтинг:
1

Wastedtalent

Вы могли бы это сделать:

returnImage.Save("C:\image.ext", ImageFormat.Jpeg);


или обойти этот бит и записать поток прямо в файл

using (var fileStream = File.Create("C:\image.ext"))
{
    ms.InputStream.Seek(0, SeekOrigin.Begin);
    ms.InputStream.CopyTo(fileStream);
}