Ptet une histoire de sens RGB/BGR, ou de lecture des DATAs?! Essaye avec ce code :
Code : Tout sélectionner
DataSection
Image1:
IncludeBinary "65801.IM1"
Image2:
IncludeBinary "65801.IM2"
Image3:
Table_Couleurs:
Data.i $000000,$0000aa,$00aa00,$00aaaa,$aa0000,$aa00aa,$aaaa00,$aaaaaa
Data.i $000055,$0000ff,$00aa55,$00aaff,$aa0055,$aa00ff,$aaaa55,$aaaaff
Data.i $005500,$0055aa,$00ff00,$00ffaa,$aa5500,$aa55aa,$aaff00,$aaffaa
Data.i $005555,$0055ff,$00ff55,$00ffff,$aa5555,$aa55ff,$aaff55,$aaffff
Data.i $550000,$5500aa,$55aa00,$55aaaa,$ff0000,$ff00aa,$ffaa00,$ffaaaa
Data.i $550055,$5500ff,$55aa55,$55aaff,$ff0055,$ff00ff,$ffaa55,$ffaaff
Data.i $555500,$5555aa,$55ff00,$55ffaa,$ff5500,$ff55aa,$ffff00,$ffffaa
Data.i $555555,$5555ff,$55ff55,$55ffff,$ff5555,$ff55ff,$ffff55,$ffffff
; les index des 16 couleur par défaut
Index_Couleurs:
Data.b 0,1,2,3,4,5,20,7,56,57,58,59,60,61,62,63
EndDataSection
Dim Couleur.l(15)
Dim Palette.i(64) ; Valeurs RVB
Restore Table_Couleurs
For i=0 To 63
Read.s Palette(i)
Next i
Restore Index_Couleurs
For i=0 To 15
Read.b Index
Couleur(i)=Palette(Index)
Next i
Enumeration
#Image_synoptique
#Sprite_synoptique
EndEnumeration
InitKeyboard()
;KeyboardMode(#PB_Keyboard_International)
InitSprite()
OpenScreen(640,480,32,"Synoptique Images")
UsePNGImageEncoder()
UseJPEGImageEncoder()
ClearScreen($aaaaaa)
x=0:y=0
CreateImage(#Image_synoptique,640,350,32)
CreateSprite(#Sprite_synoptique,640,350,#PB_Sprite_AlphaBlending)
Dim Plane_set.u(4)
StartDrawing(ImageOutput(#Image_synoptique))
*Image=?Image1 + 10 ; je ne sais pas à quoi servent les 10 premiers octets...?
Repeat
; lecture de huit pixels par plan
pos = y*320+(x/8)
For i=0 To 3
Plane_set(i)=PeekA(*Image+80*i + pos)
Next i
; recherche de la couleur de chaque pixel
For i=0 To 7
n1=(Plane_set(0)>>i) & %1
n2=(Plane_set(1)>>i) & %1
n3=(Plane_set(2)>>i) & %1
n4=(Plane_set(3)>>i) & %1
Index=(n1<<3 | n2<<2 | n3<<1 | n4)
;Index=(n4<<3 | n3<<2 | n2<<1 | n1)
Plot(x+(7-i),y,Couleur(Index))
Next i
x+8
If x>639
x=0
y+1
EndIf
Until y>199
*Image=?Image2 + 10
x = 0
y = 0
Repeat
; lecture de huit pixels par plan
pos = y*320+(x/8)
For i=0 To 3
Plane_set(i)=PeekA(*Image+80*i + pos)
Next i
; recherche de la couleur de chaque pixel
For i=0 To 7
n1=(Plane_set(0)>>i) & %1
n2=(Plane_set(1)>>i) & %1
n3=(Plane_set(2)>>i) & %1
n4=(Plane_set(3)>>i) & %1
Index=(n1<<3 | n2<<2 | n3<<1 | n4)
;Index=(n4<<3 | n3<<2 | n2<<1 | n1)
Plot(x+(7-i),y+200,Couleur(Index))
Next i
x+8
If x>639
x=0
y+1
EndIf
Until y>149
StopDrawing()
ClearScreen(0)
StartDrawing(ScreenOutput())
DrawingMode(#PB_2DDrawing_Default )
DrawImage(ImageID(#Image_synoptique),0,0)
StopDrawing()
FlipBuffers()
Repeat
ExamineKeyboard()
ClearScreen(0)
StartDrawing(ScreenOutput())
DrawingMode(#PB_2DDrawing_Default )
DrawImage(ImageID(#Image_synoptique),0,0)
StopDrawing()
If KeyboardPushed(#PB_Key_S)
GrabSprite(#Sprite_synoptique,0,0,640,350,#PB_Sprite_AlphaBlending)
SaveSprite(#Sprite_synoptique,GetCurrentDirectory()+"Synoptique.png",#PB_ImagePlugin_PNG)
SaveImage(#Image_synoptique,GetCurrentDirectory()+"Synoptique.bmp",#PB_ImagePlugin_BMP)
EndIf
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
FreeImage(#Image_synoptique)
FreeSprite(#Sprite_synoptique)
End