Как я могу читать / загружать изображения в C ++? - PullRequest
9 голосов
/ 13 февраля 2010

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

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

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

Ответы [ 6 ]

8 голосов
/ 13 февраля 2010

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

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

7 голосов
/ 13 февраля 2010

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

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

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

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

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

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

1 голос
/ 13 февраля 2010

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

1 голос
/ 13 февраля 2010

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

Проверьте класс qimage

1 голос
/ 13 февраля 2010

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

1 голос
/ 13 февраля 2010

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

Еще одна возможность - использовать библиотеку SDL Image и работать на поверхностях SDL, что позволит вам при необходимости перейти на уровень пикселей.

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