Как я могу читать/загружать изображения в C++?

я - больше Java-разработчик и существует стандартный способ прочитать изображения:

    BufferedImage img = null;
try {
    img = ImageIO.read(new File("strawberry.png"));
} catch (IOException e) {
}

но каков C++ способ загрузить изображения? Я хочу загрузить все изображения в определенном каталоге в массив или около этого.

9
задан tshepang 18 April 2014 в 04:59
поделиться

6 ответов

Лично я предпочитаю библиотеку ImageMagick .

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

8
ответ дан 4 December 2019 в 10:32
поделиться

Библиотека, которую вы хотите использовать для загрузки изображений, будет зависеть от того, что вы собираетесь с ней делать. Если вы используете фреймворк, такой как QT или wxWidgets, он предоставит процедуры загрузки изображений.

Другая возможность - использовать библиотеку SDL Image и работать с поверхностями SDL, что позволит вам работать с пиксельным уровнем, если вам нужно.

1
ответ дан 4 December 2019 в 10:32
поделиться

Я бы сказал, что наиболее близким к стандартному способу работы вы можете воспользоваться с помощью Boost / Adobe Generic Image Library .

1
ответ дан 4 December 2019 в 10:32
поделиться

Qt имеет хорошую поддержку изображений, бесплатен и кроссплатформенен.

Обратите внимание на класс qimage

1
ответ дан 4 December 2019 в 10:32
поделиться

Взгляните на DevIL

1
ответ дан 4 December 2019 в 10:32
поделиться

В C++ не существует стандартного "способа" загрузки изображений или файлов любого другого рода. Эта возможность предоставляется (обычно сторонними) библиотеками.

В Windows для загрузки изображений в память можно использовать API GDI или DirectX.

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

  • SDL-Image
  • ImageMagick
  • Qt's QImageReader
  • wxWidgets
  • cImg (Которая будет пытаться читать файлы, если доступна соответствующая библиотека, специфичная для типа файла. )
  • Boost.GIL (Которая, очевидно, поддерживает файлы JPEG, PNG и TIFF.)

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

Например, если вы собираетесь работать только с файлами JPEG, то вам лучше использовать libIJG. Или если вы будете использовать только PNG, то вам больше подойдут libPNG или cairo.

8
ответ дан 4 December 2019 в 10:32
поделиться
Другие вопросы по тегам:

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