2012-01-20 2 views
33

В настоящее время я работаю над приложением, для которого требуется высокопроизводительное преобразование незанятого массива байтов в PNG или JPEG. Формат изображения не имеет значения, до тех пор, пока он работает быстро.Преобразование массива байтов в PNG/JPG

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

EDIT: байт [] является 8bit полутоновой растровый

+0

Непонятно, что вы имеете в виду - для чего это байт-массив? Не могли бы вы дать более подробную информацию? –

+0

Ваш вопрос не совсем ясен. Что представляет собой 'byte []'? Является ли это содержанием фактического изображения? Это несжатый растровый рисунок, который вы хотите сохранить как JPG/PNG? – vcsjones

ответ

55

Вы должны быть в состоянии сделать что-то вроде этого:

byte[] bitmap = GetYourImage(); 

using(Image image = Image.FromStream(new MemoryStream(bitmap))) 
{ 
    image.Save("output.jpg", ImageFormat.Jpeg); // Or Png 
} 

Посмотрите here для получения дополнительной информации.

Надеюсь, это поможет.

+1

+1 ... в значительной степени Обычный способ сделать это. Однако в зависимости от требований пользователя не нужно сохранять его в файловой системе. –

+0

Отлично. Я люблю это! Это было то, что я искал. –

+2

Привет, Я пытаюсь схожую вещь, чтобы преобразовать необработанное изображение в jpeg butgetting * Параметр недействителен * Исключение. Есть идеи? 'byte [] bytes = System.IO.File.ReadAllBytes (@" C: \ Input.CR2 "); используя (изображение изображение = изображение.FromStream (новый MemoryStream (байты))) { image.Save (@ "C: \ output.jpg", ImageFormat.Jpeg); } ' –

0

Мне нравится Imagemagick. http://www.imagemagick.org/script/api.php

+0

Я знаю, что это для использования библиотеки программирования, но что будет в командной строке для инструмента? – user2284570

+0

@ user2284570 Если вы используете его в командной строке, вы будете работать с файлом, а не с байтовым массивом. Предполагая, что ваш вход PNG (подпись PNG, за которой следует куски), тогда, вероятно, будет работать 'convert input.png output.jpg'. – ahoffer

1

Есть две проблемы с этим вопрос:

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

  1. Для Jpgs ... что потеря качества допустима ?
  2. Для pngs ... какой уровень сжатия допустим? (Хотя для большинства вещей, которые я видел, у вас нет такого выбора, поэтому этот выбор может быть незначительным.) Для любого, кто думает, что этот вопрос не имеет смысла: да, вы можете изменить объем сжатия/количество проходов, пытавшихся сжать; проверьте либо Ifranview, либо некоторые из его плагинов.

Ответьте на эти вопросы, и тогда вы сможете найти свой первоначальный ответ.

Смежные вопросы