Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème de traduction, type uint32

6 réponses
Avatar
Pierre BOUSQUET
Bonjour,

Je n'arrive pas à transcrire le type uint32 dans ce programme


int j, k, row_counter, offset;
tsize_t ScanlineSize = TIFFScanlineSize(tiffRead);
//ScanlineSize = 2160 = 720*3

uint32* pic_buffer = (uint32*)_TIFFmalloc(sizeof(uint32) *
imageWidth * imageHeight);
uint32* line_buffer = (uint32*)_TIFFmalloc(sizeof(uint32) *
ScanlineSize);

k=0;
for (row_counter=0; row_counter<imageHeight; row_counter++)
{
TIFFReadScanline(tiffRead , line_buffer , row_counter);
for( j=0; j<ScanlineSize; j+=3 ) //reading RGB value
from file and combining into pixel[k]
{
pic_buffer[k] = ( ((((uint32)line_buffer[j]) <<8<<8
)&0x00FF0000)
| ((((uint32)line_buffer[j+1]) <<8
)&0x0000FF00)
| (((uint32)line_buffer[j+2])&0x000000FF)
);
k++;
}
}


Merci d'avance

--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "

6 réponses

Avatar
nicolas
Pierre BOUSQUET a écrit :
Bonjour,

Je n'arrive pas à transcrire le type uint32 dans ce programme


int j, k, row_counter, offset;
tsize_t ScanlineSize = TIFFScanlineSize(tiffRead);
//ScanlineSize = 2160 = 720*3

uint32* pic_buffer = (uint32*)_TIFFmalloc(sizeof(uint32) *
imageWidth * imageHeight);
uint32* line_buffer = (uint32*)_TIFFmalloc(sizeof(uint32) *
ScanlineSize);

k=0;
for (row_counter=0; row_counter<imageHeight; row_counter++)
{
TIFFReadScanline(tiffRead , line_buffer , row_counter);
for( j=0; j<ScanlineSize; j+=3 ) //reading RGB val ue
from file and combining into pixel[k]
{
pic_buffer[k] = ( ((((uint32)line_buffer[j]) <<8<<8
)&0x00FF0000)
| ((((uint32)line_buffer[j+1]) <<8
)&0x0000FF00)
| (((uint32)line_buffer[j+2])&0x000000FF)
);
k++;
}
}


Merci d'avance

--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "




On 26 fév, 14:42, Pierre BOUSQUET wrote:
Bonjour,

Je n'arrive pas à transcrire le type uint32 dans ce programme

int j, k, row_counter, offset;
tsize_t ScanlineSize = TIFFScanlineSize(tiffRead);
//ScanlineSize = 2160 = 720*3

uint32* pic_buffer = (uint32*)_TIFFmalloc(sizeof(uint32) *
imageWidth * imageHeight);
uint32* line_buffer = (uint32*)_TIFFmalloc(sizeof(uint32) *
ScanlineSize);

k=0;
for (row_counter=0; row_counter<imageHeight; row_counter++)
{
TIFFReadScanline(tiffRead , line_buffer , row_counter);
for( j=0; j<ScanlineSize; j+=3 ) //reading RGB val ue
from file and combining into pixel[k]
{
pic_buffer[k] = ( ((((uint32)line_buffer[j]) <<8<<8
)&0x00FF0000)
| ((((uint32)line_buffer[j+1]) <<8
)&0x0000FF00)
| (((uint32)line_buffer[j+2])&0x000000FF)
);
k++;
}
}

Merci d'avance

--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "




Si par transcrire vous entendez traduire le type "uint32" en type
compatible windev, je pense qu'il peut etre transformé en: "un entier
sans signe sur 4 octets"
Avatar
pterrier
> > uint32* pic_buffer = (uint32*)_TIFFmalloc(sizeof(uint32) * imageW idth * imageHeight);



pic_buffer est un DWORD PTR (pointeur 32-bit)
qui pointe sur un bitmap mémoire ou un DIB 32-bit d'une taille de (4 *
imageWidth * imageHeight)

Patrice Terrier
www.zapsolution.com
Avatar
Pierre BOUSQUET
merci, c'est ce que j'ai fait avec

Buff est un buffer
API(Dll,"TIFFReadScanline",tiffRead , &Buff , row_counter)

ca ne plante pas mais ne fonctionne pas...

a pensé très fort :
uint32* pic_buffer = (uint32*)_TIFFmalloc(sizeof(uint32) * imageWidth *
imageHeight);





pic_buffer est un DWORD PTR (pointeur 32-bit)
qui pointe sur un bitmap mémoire ou un DIB 32-bit d'une taille de (4 *
imageWidth * imageHeight)

Patrice Terrier
www.zapsolution.com



--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
Avatar
patrice
"Pierre BOUSQUET" a écrit dans le message de
news:
merci, c'est ce que j'ai fait avec

Buff est un buffer
API(Dll,"TIFFReadScanline",tiffRead , &Buff , row_counter)

ca ne plante pas mais ne fonctionne pas...



un buffer windev est tout sauf un buffer :)
si le buffer est alloué par la dll alors il s'agit juste d'un pointeur
Buff est un entier sans signe sur 4 octets
API(Dll,"TIFFReadScanline",tiffRead , &Buff , row_counter)
Avatar
Pierre BOUSQUET
certe, mais alors pour recuperer le buffer il faudrait faire (?) :

Buff est buffer
raster est entier sur 4 octets sans signe =
API(Dll,"TIFFmalloc",4*TailleLigne)
API(Dll,"TIFFReadScanline",tiffRead , raster , row_counter)
transfert(&Buff, raster, 4*TailleLigne)


patrice a exprimé avec précision :
"Pierre BOUSQUET" a écrit dans le message de
news:
merci, c'est ce que j'ai fait avec

Buff est un buffer
API(Dll,"TIFFReadScanline",tiffRead , &Buff , row_counter)

ca ne plante pas mais ne fonctionne pas...



un buffer windev est tout sauf un buffer :)
si le buffer est alloué par la dll alors il s'agit juste d'un pointeur
Buff est un entier sans signe sur 4 octets
API(Dll,"TIFFReadScanline",tiffRead , &Buff , row_counter)



--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
Avatar
patrice
Pierre BOUSQUET a écrit :
certe, mais alors pour recuperer le buffer il faudrait faire (?) :

Buff est buffer
raster est entier sur 4 octets sans signe =
API(Dll,"TIFFmalloc",4*TailleLigne)
API(Dll,"TIFFReadScanline",tiffRead , raster , row_counter)
transfert(&Buff, raster, 4*TailleLigne)




ca sonne beaucoup plus vrai

mais attention, raster est un buffer alloué et faudra pas oublier de le
desallouer


et pourquoi récupérer le buffer de la dll dans un buffer windev ? si
c'est pas indispensable, vaudrait mieux éviter