Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Конвертировать формат изображения, без сохранения в файл 
V
    Опции темы
Moid
Дата 3.3.2008, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 27.3.2006

Репутация: 2
Всего: 3



Конвертирую я изображения (с указанием параметров) из одного формата в другой так:
Код

static private ImageCodecInfo GetEncoderInfo(String mimeType)
        {
            int j;
            ImageCodecInfo[] encoders;
            encoders = ImageCodecInfo.GetImageEncoders();
            for (j = 0; j < encoders.Length; ++j)
            {
                if (encoders[j].MimeType == mimeType)
                    return encoders[j];
            }
            return null;
        }
        public static void SaveJPG(Image image, string fileName, long compression)
        {
            EncoderParameters eps = new EncoderParameters(1);
            eps.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, compression);
            ImageCodecInfo ici = GetEncoderInfo("image/jpeg");
            image.Save(fileName, ici, eps);
        }



Хочу положить сконвертированное изображение в новый Bitmap. 
Способ сохранить на диск и загрузить не подходит.
Как мне это сделать не вызывая  image.Save(...)?


--------------------
"Всё должно быть сделано настолько простым, насколько это возможно, но не проще" (с) А.Эйнштейн
PM MAIL   Вверх
Freak_FB
  Дата 3.3.2008, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ктулхувед
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 13.10.2006

Репутация: 1
Всего: 4



По-моему, у тебя заблуждение в терминах произошло.
Формат изображения, IMHO, это то, как он и в каком виде хранится на диске. И вопрос, по ходу, неверно поставлен.
А Bitmap - это просто массив точек, это уже как он в памяти хранится, и как выводится на экран или ещё куда.


--------------------
user posted image
user posted image
Тонет Ктулху, все медведы горят в огне.
Я Креведко, очень страшно сегодня мне.

PM MAIL ICQ Skype GTalk Jabber   Вверх
Moid
Дата 3.3.2008, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 27.3.2006

Репутация: 2
Всего: 3



Хочу сделать предпросморт изображения перед конвертированием. Нужно заранне посмотреть как измениться изображение.
Сохраняться нельзя!
Как посмотреть каким будет изображение?


--------------------
"Всё должно быть сделано настолько простым, насколько это возможно, но не проще" (с) А.Эйнштейн
PM MAIL   Вверх
Moid
Дата 3.3.2008, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 27.3.2006

Репутация: 2
Всего: 3



Есть такой метод:
Код

Image.Save Method (Stream, ImageFormat) 


Как его использовать. Сохранить и загрузить в Bitmap или Image?
 smile 


--------------------
"Всё должно быть сделано настолько простым, насколько это возможно, но не проще" (с) А.Эйнштейн
PM MAIL   Вверх
Moid
Дата 3.3.2008, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 27.3.2006

Репутация: 2
Всего: 3



Код

        public static byte[] BmpByteArray(string fileName)
        {
            using (Bitmap image = new Bitmap(fileName))
            {
                MemoryStream stream = new MemoryStream();
                image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
                return stream.ToArray();
            }
        }


Код

        private void button1_Click(object sender, EventArgs e)
        {
            MemoryStream stream = new MemoryStream(BmpByteArray("F:\\3\\0.bmp"));
            pictureBox2.Image = new Bitmap(stream);
        }



--------------------
"Всё должно быть сделано настолько простым, насколько это возможно, но не проще" (с) А.Эйнштейн
PM MAIL   Вверх
Freak_FB
  Дата 3.3.2008, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ктулхувед
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 13.10.2006

Репутация: 1
Всего: 4



Код

pictureBox1.Image = Image.FromFile(openFileDialog1.FileName);
MemoryStream ms = new MemoryStream();
pictureBox1.Image.Save(ms, ImageFormat.Jpeg);
ms.Flush();
pictureBox2.Image = Image.FromStream(ms);


Таким вот нехитрым способом загружаем выбранный посредством OpenFileDialog битмап, показываем его на первый PictureBox, загоняем его в MemoryStream как жпег, и тут же его рисуем на второй PictureBox.

Moid, я так вижу, что ты и сам с проблемой определился, только решение немного громоздким вышло.  smile 

Это сообщение отредактировал(а) Freak_FB - 3.3.2008, 17:35


--------------------
user posted image
user posted image
Тонет Ктулху, все медведы горят в огне.
Я Креведко, очень страшно сегодня мне.

PM MAIL ICQ Skype GTalk Jabber   Вверх
Moid
Дата 4.3.2008, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 27.3.2006

Репутация: 2
Всего: 3



ms.Flush();  - это что?


--------------------
"Всё должно быть сделано настолько простым, насколько это возможно, но не проще" (с) А.Эйнштейн
PM MAIL   Вверх
Freak_FB
  Дата 5.3.2008, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ктулхувед
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 13.10.2006

Репутация: 1
Всего: 4



И в самом деле, не нужен он. Это я с файловым потоком его "скрестил", где нужно буфер из памяти на диск вылаживать.


--------------------
user posted image
user posted image
Тонет Ктулху, все медведы горят в огне.
Я Креведко, очень страшно сегодня мне.

PM MAIL ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0457 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.