Как я могу передать данные изображения TIFF в JUCE (который не поддерживает TIFF)? - PullRequest
0 голосов
/ 19 октября 2011

Я использую обучение программированию с использованием библиотеки C ++ JUCE.Эта библиотека поддерживает формат файла изображения (png, jpg).Но я хочу узнать, как я могу использовать другой формат файла, например, TIFF.

После Google я получил libtiff.

Мой вопрос заключается в том, какой будет точный подход для отображения этого.Для этого мне нужно конвертировать .tiff файл в jpeg / png из tiff.

Но я думаю, что это потребует двойной обработки.

Может кто-нибудь объяснить исходный / родной / базовый формат файла изображения, чтобы мне нужно было преобразовать все изображения в этот тип и использовать его напрямую.

Как я нахожу что-то в winAPI для работы с изображениямив котором они используют данные изображений из файлового формата.

Будет очень полезно, если кто-нибудь подскажет мне подход к обработке данных изображений и их отображению.

Ответы [ 3 ]

1 голос
/ 19 октября 2011

Чтобы сделать что-то вроде чтения * .tiff изображений и использовать их в сборке приложения со структурой JUCE, я бы предложил создать новый класс, производный от базового интерфейса ImageFileFormat.

class MyTiffFormat : public ImageFileFormat
{
  private:
    MyTiffFormat( const MyTiffFormat& );
    MyTiffFormat& operator=( const MyTiffFormat& );

  public:
    MyTiffFormat();
    ~MyTiffformat();

    const String getFormatName();
    bool canUnderStand();
    Image decodeImage( InputStream& input );
    bool writeImageToStream( const Image& source, OuptputStream& dest );

};

Реализация функции «Image decodeImage (InputSTeram & input)» - это тот момент, когда вам нужно что-то вроде libtiff. В дереве исходного кода JUCE вы найдете реализацию PNG и других поддерживаемых форматов в папке: \ juce \ src \ gui \ graphics \ imaging

Дополнительную информацию о расширении функций JUCE можно найти на форуме пользователей JUCE .

1 голос
/ 19 октября 2011

Может кто-нибудь объяснить необработанный / родной / основной формат файла изображения, чтобы мне нужно было преобразовать все изображения в этот тип и использовать его напрямую.

Не существует "родного" формата файла изображения, но RGB подходит близко (особенно если вы обрезаете заголовки, чтобы получить только ширину и время; высоту и время; массив каналов значений пикселей). Вы, вероятно, не захотите использовать это для хранения всего, хотя ваши буферы будут очень большими. Пусть ваши библиотеки обрабатывают хранилище.

Будет очень полезно, если кто-нибудь подскажет мне подход к обработке данных изображений и их отображению.

Нет "подходящего" подхода. Сам C ++ ничего не говорит об изображениях, и существует множество способов работы с ними. Ваш дизайн будет зависеть от спецификации функциональных требований и от того, какие библиотеки у вас есть.

Я использую обучение программированию с использованием библиотеки C ++ JUCE. Тот В библиотеке есть поддержка формата файлов изображений (png, jpg). Но я хочу Узнайте, как я могу использовать другой формат файла, например TIFF.

После Google я получил libtiff.

Мой вопрос: каков будет точный подход к отображению этого? Должен ли я конвертировать .tiff файл в jpeg / png из TIFF для выполнения это.

Но я думаю, что это потребует двойной обработки.

Если вы имеете в виду использование libtiff для преобразования изображений в формате TIFF в форматы, которые поддерживает JUCE, вы правы, говоря, что это вводит дополнительный начальный этап обработки. Однако, как вы уже сказали, звучит так, что любая возможная производительность, достигнутая в результате этого, будет значительно, дико и сильно перевешена преимуществом простоты и ясности. Так что я бы просто сделал это.

0 голосов
/ 22 октября 2013

Juce прекрасно работает с pngs, jpgs и gifs (не анимированными), и их можно читать из файла или даже «компилировать» с помощью BinaryBuilder.

Например, чтобы загрузить его из скомпилированного c ++ с помощью BinaryBuilder.

someImage = ImageFileFormat::loadFrom (AppResources::image_png, AppResources::image_pngSize);

Посмотрите документооборот, они весьма полезны. для компиляции ваших изображений с BinaryBuilder синтаксис:

./BinaryBuilder someFolder otherFolder ClassName
...