Чтение НЕОБРАБОТАННЫХ файлов изображений как GDI + [закрытые] битовые массивы

Существует ли хороший способ считать НЕОБРАБОТАННЫЕ файлы изображений (особенно Canon CR2 и файлы Adobe DNG) как GDI + битовые массивы, который довольно быстр?

Я нашел пример, работающий под WPF, который прочитает изображение с помощью любого установленного кодека изображения и затем отобразит его в управлении изображением. И я изменил этот пример для создания GDI + битовый массив путем записи изображения WPF в MemoryStream и создания Битового массива из этого. Но этот процесс является медленным! Ужасно замедлитесь! Открытие простого изображения занимает приблизительно 10 секунд на моем компьютере. Это решение также требует ссылок на блоки WPF, и это не чувствует себя хорошо, особенно не, так как я хотел бы выполнить код в проекте ASP.NET.

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

Так, какие-либо предложения?

9
задан Andrey Rubshtein 22 February 2012 в 08:41
поделиться

2 ответа

Отказ от ответственности: Я работаю в Atalasoft.

Наша фотография DotImage Pro продукт может сделать это. Если Вы хотите попытаться сделать это сами, изучить обертывание DCRaw с открытым исходным кодом или посмотреть на то, как Paint.NET делает это (я думаю, что существует НЕОБРАБОТАННЫЙ плагин для него),

6
ответ дан 3 November 2019 в 00:05
поделиться

Фотография DotImage Pro компонент работал хорошо, но у меня была проблема при извлечении изображения предварительного просмотра из необработанных файлов с помощью него. Это также вне моего бюджета для этого проекта.

Но, я нашел код для НЕОБРАБОТАННОГО плагина для Paint.NET здесь, и было довольно просто адаптироваться к моим потребностям. Плагин выполняет исполняемое использование DCRaw Process.Start и читает его вывод из StandardOutput поток. Довольно простой и быстрый!:-)

Править:

Ссылка на плагин больше не работает, но здесь является кодом, я раньше извлекал изображения. Следующий код извлекает jpg-предварительный-просмотр, сохраненный в необработанном файле. Если Вы хотите полный образ, необходимо удалить-e аргумент. Но знайте, что для некоторых камер Вы получите ppm-изображение, которое не может прочитать GDI +.

public Stream GetImageData(string inputFile, string dcRawExe)
{


    var startInfo = new ProcessStartInfo(dcRawExe)
    {
        Arguments = "-c -e \"" + inputFile + "\"",
        RedirectStandardOutput = true,
        UseShellExecute = false
    };

    var process = Process.Start(startInfo);

    var image = Image.FromStream(process.StandardOutput.BaseStream);

    var memoryStream = new MemoryStream();
    image.Save(memoryStream, ImageFormat.Png);

    return memoryStream;
}

Кроме того, Вам будет нужна копия DCRaw. Я использовал DcrawMS.exe от этого сайта: http://www.insflug.org/raw/Downloads/

3
ответ дан 3 November 2019 в 00:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: