Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[FreeImage] Źle odczytuje pikesele

Ostatnio zmodyfikowano 2017-09-11 19:57
Autor Wiadomość
fokusx
Temat założony przez niniejszego użytkownika
[FreeImage] Źle odczytuje pikesele
» 2017-09-11 18:46:35
C/C++
#include <iostream>

#include <FreeImage.h>
using namespace std;

int main( int argc, char * argv[] )
{
    FIBITMAP * image;
    FREE_IMAGE_FORMAT fif = FreeImage_GetFileType( "test.jpg" );
    image = FreeImage_Load( fif, "test.jpg" );
    if( !image )
    {
        cout << "I could not open " << endl << endl;
        system( "pause" );
        return( 1 );
    }
   
    unsigned width = FreeImage_GetWidth( image );
    unsigned height = FreeImage_GetHeight( image );
   
    BYTE * Data = FreeImage_GetScanLine( image, 0 );
   
    for( int i = 0; i < 10; ++i )
         cout <<( int ) Data[ i ] << ", " << "\t";
   
    cout << endl;
    system( "pause" );
   
    return( 0 );
}
Pokazuje mi inne wartości niż w gimpie.
Sprawdzałem bpp: 24, typ: rgb, rozmiar mapy się zgadza.
Wartości pikseli są podobne ale nie identyczne jak w gimpie.
Co robię źle?
P-164794
Luq
» 2017-09-11 19:38:43
Może być kilka powodów, przez które źle odczytujesz dane bitmapy
1. Każdy wiersz bitmapy jest wyrównany do całkowitej wielokrotności 4 bajtów.
2. Wiersze są zapisane od dołu do góry.

Ponadto piksele mogą być zapisane w formacie BGR a nie RGB.

P-164798
golibroda13
» 2017-09-11 19:57:33
Weź plik z 255 liniami, które mają kolor R:0-255, G:0-0, B:0-0 i zobacz co wyjdzie.
P-164800
« 1 »
  Strona 1 z 1