Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Быстро получить размеры изображения.


Автор: sgi1981 7.9.2006, 00:47
Подскажите, пожалуйста, как можно узнать размеры изображения в файле не создавая БИТМАП с помощью GDI+.

Я знаю, что можно узнавать размеры изображения путем предварительного создания объекта GDI+ BITMAP, а затем вызвать функцию по возврату размеров изображения, после чего необходимо закрывать BITMAP GDI+.

Но можно ли пойти более совершенным путем ?

Автор: dumb 7.9.2006, 01:15
взять http://forum.vingrad.ru/index.php?showtopic=8035&view=findpost&p=49801 и переписать на C - там две строчки... smile

более правильное получение размера jpeg'а http://forum.vingrad.ru/index.php?showtopic=105564&view=findpost&p=812769.

Автор: Sceptik 7.9.2006, 06:40
sgi1981, если ты говоришь про bmp то читай загаловки файла. Там есть размер.

Код

img_info *CTexture::loadBMP(const char *filename)
{
    int result = resource.open(filename);
    if (result)
        return NULL;

    img_info            *bmpdata = (img_info *)malloc(sizeof(img_info));

    BITMAPFILEHEADER    fileheader;
    BITMAPINFOHEADER    infoheader;
    int                    size;

    size = resource.getSize() - sizeof(fileheader) - sizeof(infoheader);
    resource.read((char *)&fileheader, sizeof(BITMAPFILEHEADER), 1);
    resource.read((char *)&infoheader, sizeof(BITMAPINFOHEADER), 1);

    if (fileheader.bfType != 0x4d42)
        return NULL;
    bmpdata->width  = infoheader.biWidth;
    bmpdata->height = infoheader.biHeight;
    bmpdata->bpp    = infoheader.biBitCount;

    bmpdata->data = (unsigned char *)malloc(size);
    resource.read(bmpdata->data, size, 1);
    resource.close();
    return bmpdata;
}


разбирайся здесь все есть.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)