Pergunta

Eu preciso para obter as dimensões da imagem de um JPEG em C ++. Eu estou procurando qualquer uma maneira bastante simples de fazê-lo ou uma biblioteca pequena que fornece essa funcionalidade. Eu estou trabalhando em C ++ em OpenVMS, portanto, qualquer bibliotecas externas podem ter de ser adaptado para compilar em nossos sistemas - por favor, não postar me liga a grande, bibliotecas de código fechado

Já alguém se deparar com qualquer coisa que possa fazer o truque, ou entender o formato de arquivo JPEG (Eu acho que provavelmente significa que o formato de arquivo JFIF aqui) para me dizer como eu poderia ir sobre rolando minha própria solução?

Foi útil?

Solução

Você tem esse href="http://carnage-melon.tom7.org/stuff/jpegsize.html" rel="nofollow noreferrer"> C função

Esta é uma rotina C, mas deve compilar bem com C ++.
Passá-lo um ponteiro de arquivo normal (a partir fopen) para o início de um arquivo JPEG e dois ponteiros int a ser definido com a altura da imagem e largura.

Ou você pode encontrar no impulso biblioteca um jpeg classe que tem a função direita (de Adobe genérico imagem Biblioteca ).

jpeg_read_dimensions

boost::gil::jpeg_read_dimensions (const char *filename)

Retorna a largura e altura do arquivo JPEG no local especificado. Lança std :: ios_base :: fracasso se o local não corresponde a um arquivo JPEG válido.

Outras dicas

libjpeg é razoavelmente pequeno, de código aberto e disponível em OpenVMS. É provavelmente mais rápido para instalá-lo do que para lidar com JPEG si mesmo.

Você deve ser capaz de usar este jpeg lib com este < a href = "http://nchrem.tnw.tudelft.nl/openvms/software2.html#Jpeglib" rel = "noreferrer nofollow"> remendo para OpenVMS

Não há necessidade de biblioteca libjpeg inteiro apenas para obter essa informação (a menos que você precisa fazer alguma coisa com as imagens). ImageInfo pode ajudá-lo. É uma classe Java, mas há portas para outras línguas, incluindo C ++.
Como fora pontas, Exif pode alterar essas informações (por exemplo., Com configuração de orientação).

Você pode querer tentar GDAL biblioteca que serve como uma camada de abstração para grande número de formatos de dados raster, utilizados principalmente em aplicações geoespaciais para GIS / RS.

GDAL fornece número de APIs, para C, C ++ e linguagens de script. Claro, ele suporta JPEG imagens e suas variantes como JPEG2000 e muito mais.

Aqui está um exemplo muito simples como abrir imagem JPEG e consulta suas dimensões:

#include <gdal_priv.h>

GDALAllRegister(); // call ones in your application

GDALDataset* ds = (GDALDataset*)GDALOpen("my.jpeg", GA_ReadOnly);
int width  = ds->GetRasterXSize();
int height = ds->GetRasterYSize(),
int nbands = ds->GetRasterCount();

Verifique GDAL API tutorial por exemplo mais completo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top