Resize Image - with several modes

Share your advanced PureBasic knowledge/code with the community.
Liqu
User
User
Posts: 77
Joined: Sun Apr 21, 2013 10:31 am

Resize Image - with several modes

Post by Liqu »

Hope this will help :)

Code: Select all


;-// FUNCTIONS

Procedure MB_CenterPos(ContainerWidth, ObjectWidth)
  ProcedureReturn (ContainerWidth - ObjectWidth ) / 2
EndProcedure


#MB_RESIZEIMAGE_FILL    = 0
#MB_RESIZEIMAGE_FIT     = 1
#MB_RESIZEIMAGE_STRETCH = 2
#MB_RESIZEIMAGE_TILE    = 3
#MB_RESIZEIMAGE_CENTER  = 4

Structure MB_ResizeImageSTR
  Image.i
  Width.i
  Height.i
  Mode.i
  Color.i
  Result.i
EndStructure


Procedure MB_ResizeImageThread(*MB_ResizeImageVar.MB_ResizeImageSTR)
  Protected Image, Width, Height, Mode, Color
  Protected ImageW, ImageH, WidthP.f , HeightP.f , WidthR, HeightR, GetP.f
  
  Image   = *MB_ResizeImageVar\Image
  Width   = *MB_ResizeImageVar\Width
  Height  = *MB_ResizeImageVar\Height
  Mode    = *MB_ResizeImageVar\Mode
  Color   = *MB_ResizeImageVar\Color
  
  If IsImage(Image)
    
    ImageW = ImageWidth(Image)
    ImageH = ImageHeight(Image)
    
    WidthP  = ImageW / Width
    HeightP = ImageH / Height
    
    WidthR  = Width
    HeightR = Height
    
    Select Mode
        Case #MB_RESIZEIMAGE_FILL
          
          WidthR  = Width
          HeightR = ImageH / WidthP
          
          If HeightR < Height
            
            HeightR = Height
            WidthR  = ImageW / HeightP
            
          EndIf
          
        Case #MB_RESIZEIMAGE_FIT
          
          WidthR  = Width
          HeightR = ImageH / WidthP
          
        Case #MB_RESIZEIMAGE_STRETCH
          
          WidthR  = Width
          HeightR = Height
          
        Case #MB_RESIZEIMAGE_TILE
          
          WidthR  = ImageW
          HeightR = ImageH
          
        Case #MB_RESIZEIMAGE_CENTER
          
          WidthR  = ImageW
          HeightR = ImageH
          
    EndSelect  
      
    If Width = 0
      Width = WidthR
    EndIf
    
    If Height = 0 
      Height = HeightR
    EndIf
    
    ResizeImage(Image,WidthR,HeightR)
    NewImage = CreateImage(#PB_Any,Width,Height)
      StartDrawing(ImageOutput(NewImage))
      Box(0,0,Width,Height,Color)
      
      If Mode = #MB_RESIZEIMAGE_FIT
        
        DrawImage(ImageID(Image),0,0)
        
      ElseIf Mode = #MB_RESIZEIMAGE_CENTER
        
        DrawImage(ImageID(Image),MB_CenterPos(Width,WidthR),MB_CenterPos(Height,HeightR))
        
      ElseIf Mode = #MB_RESIZEIMAGE_TILE
                
        For x = 0 To Round( Width / WidthR , #PB_Round_Down)
          For y = 0 To Round( Height / HeightR , #PB_Round_Down)
              DrawImage(ImageID(Image),x * WidthR,y * HeightR)
          Next
        Next

      Else
        
        DrawImage(ImageID(Image),0,0)
        
      EndIf
    StopDrawing()
  
    If IsImage(Image)
      FreeImage(Image)
    EndIf
    
  EndIf
  
  *MB_ResizeImageVar\Result = NewImage
EndProcedure

Procedure MB_ResizeImage(Image,Width=0,Height=0,Mode=#MB_RESIZEIMAGE_FILL,Color=0)
  
  Protected Thread, Result
  Protected *MB_ResizeImageVar.MB_ResizeImageSTR
  
  *MB_ResizeImageVar.MB_ResizeImageSTR = AllocateMemory(SizeOf(MB_ResizeImageSTR))
  *MB_ResizeImageVar\Image           = Image
  *MB_ResizeImageVar\Width           = Width
  *MB_ResizeImageVar\Height          = Height
  *MB_ResizeImageVar\Mode            = Mode
  *MB_ResizeImageVar\Color           = Color
  
  Thread = CreateThread(@MB_ResizeImageThread(),*MB_ResizeImageVar)
  WaitThread(Thread)
  
  Result = *MB_ResizeImageVar\Result
  FreeMemory(*MB_ResizeImageVar)

  ProcedureReturn Result
EndProcedure


;- // EXAMPLE
UseJPEGImageDecoder()
UsePNGImageDecoder()

If OpenWindow(0,0,0,320,240,"",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)

    file$=OpenFileRequester("","*.*","*.*",0)
    pic=LoadImage(#PB_Any,file$)
    fixpic=MB_ResizeImage(pic,320,240,#MB_RESIZEIMAGE_TILE,#Red)
    ImageGadget(0,0,0,320,0,ImageID(fixpic))   
    Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow

EndIf



User avatar
vinostien
User
User
Posts: 24
Joined: Tue May 31, 2011 1:11 am
Location: Kim

Re: Resize Image - with several modes

Post by vinostien »

hello I like your style of programing
I can't get it to resize my over sized image,
this line I have errors on;
fixpic=MB_ResizeImage(pic,320,240,#MB_RESIZEIMAGE_TILE,#Red)
so I changed it to read;
fixpic=MB_ResizeImage(pic,320,240,#MB_RESIZEIMAGE_TILE)
still unkown to my over sized image?
mestnyi
Addict
Addict
Posts: 1098
Joined: Mon Nov 25, 2013 6:41 am

Re: Resize Image - with several modes

Post by mestnyi »

Try my job

Code: Select all

UsePNGImageDecoder()
Global ico = CatchImage(#PB_Any, ?i, 1150)
Global png = CatchImage(#PB_Any, ?p, 582)
Global Window_0,Window_1,Window_2,Window_3
Global Parent

Macro UpdateWindow(Window, State = 1)
  CompilerIf #PB_Compiler_OS=#PB_OS_Windows
    SendMessage_(WindowID(Window),#WM_SETREDRAW,State,0)
    If State
      RedrawWindow_(WindowID(Window),0,0,#RDW_ALLCHILDREN|#RDW_UPDATENOW)
      InvalidateRect_(WindowID(Window),0,0)
      UpdateWindow_(WindowID(Window))
    EndIf 
  CompilerEndIf
EndMacro



;----------------------------------------
Procedure MosaicImage(Gadget,*Image) ;Ok
  Protected x,y,w,h
  Static iw,ih,CreateImage :If IsImage(CreateImage) :FreeImage(CreateImage) :EndIf
  Image=PeekL(*Image)
  If Not IsImage(Image)
    Debug "нужен указатель на рисунок @"
  EndIf
  
  If IsImage(Image)  And IsGadget(Gadget) And (ImageWidth(Image) & ImageHeight(Image))
    w=GadgetWidth(Gadget)
    h=GadgetHeight(Gadget)
    ;If w&h
    Debug 66
      iw=ImageWidth(Image)
      ih=ImageHeight(Image)
    ;EndIf
    CreateImage=CreateImage(#PB_Any,w+1, h+1,32,#PB_Image_Transparent)
    If (ImageWidth(Image) & ImageHeight(Image)) And StartDrawing(ImageOutput(CreateImage)) 
      DrawingMode(#PB_2DDrawing_AlphaChannel|#PB_2DDrawing_AllChannels)  ;DrawingMode(#PB_2DDrawing_AlphaBlend) 
      For x = 0 To OutputWidth()-1
        For y = 0 To OutputHeight()-1
          DrawAlphaImage(ImageID(Image),x,y)
          y+ih
        Next
        x+iw
      Next
      StopDrawing()
    EndIf
    PokeL(*Image, PeekL(@CreateImage))
    ProcedureReturn CreateImage
  EndIf 
EndProcedure

Procedure StretchImage(Gadget,*Image,Mode=#PB_Image_Raw) ;Ok
  Protected w,h
  Static CopyImage :If IsImage(CopyImage) :FreeImage(CopyImage) :EndIf
  Image=PeekL(*Image)
  If IsImage(Image)  And IsGadget(Gadget) And (ImageWidth(Image) & ImageHeight(Image))
    CopyImage=CopyImage(Image,#PB_Any)
    w=GadgetWidth(Gadget)
    h=GadgetHeight(Gadget)
    ResizeImage(CopyImage,w,h,Mode)
    PokeL(*Image, PeekL(@CopyImage))
    ProcedureReturn CopyImage
  EndIf
EndProcedure

Procedure CenterImage(Gadget,*Image) ;Ok
  Protected w,h,x,y
  Static CreateImage :If IsImage(CreateImage) :FreeImage(CreateImage) :EndIf
  Image=PeekL(*Image)
  If Not IsImage(Image)
    Debug "нужен указатель на рисунок @"
  EndIf
  
  If IsImage(Image) 
    w=GadgetWidth(Gadget)
    h=GadgetHeight(Gadget)
    x=(w-ImageWidth(Image))/2
    y=(h-ImageHeight(Image))/2
    CreateImage=CreateImage(#PB_Any,w+1, h+1,32,#PB_Image_Transparent)
    If (ImageWidth(Image) & ImageHeight(Image)) And StartDrawing(ImageOutput(CreateImage)) 
      DrawingMode(#PB_2DDrawing_AlphaChannel|#PB_2DDrawing_AllChannels) 
      DrawAlphaImage(ImageID(Image),x,y)
      StopDrawing()
      PokeL(*Image, PeekL(@CreateImage))
      ProcedureReturn CreateImage
    EndIf
  EndIf
EndProcedure

Procedure ProportionalImage(Gadget,*Image,Mode=#PB_Image_Raw) ;Ok
  Protected w,h,x,y
  Static CopyImage :If IsImage(CopyImage) :FreeImage(CopyImage) :EndIf
  Static CreateImage :If IsImage(CreateImage) :FreeImage(CreateImage) :EndIf
  Image=PeekL(*Image)
  If Not IsImage(Image)
    Debug "нужен указатель на рисунок @"
  EndIf
  
  If IsImage(Image)  And IsGadget(Gadget) And (ImageWidth(Image) & ImageHeight(Image))
    w=GadgetWidth(Gadget)
    h=GadgetHeight(Gadget)
    CopyImage=CopyImage(Image,#PB_Any)
    CreateImage=CreateImage(#PB_Any,w+1, h+1,32,#PB_Image_Transparent)
    If w>h :ResizeImage(CopyImage,h,h,Mode) :Else :ResizeImage(CopyImage,w,w,Mode) :EndIf
    x=(w-ImageWidth(CopyImage))/2
    y=(h-ImageHeight(CopyImage))/2
    
    If  (ImageWidth(CopyImage) & ImageHeight(CopyImage)) And StartDrawing(ImageOutput(CreateImage)) 
      DrawingMode(#PB_2DDrawing_AlphaChannel|#PB_2DDrawing_AllChannels) 
      DrawAlphaImage(ImageID(CopyImage),x,y)
      StopDrawing()
    EndIf
    PokeL(*Image, PeekL(@CreateImage))
    ProcedureReturn CreateImage
  EndIf
EndProcedure

Procedure SetImage(Gadget,Image)
  If GadgetType(Gadget)= #PB_GadgetType_ButtonImage
    SetGadgetAttribute(Gadget,#PB_Button_Image,ImageID(Image))
  ElseIf GadgetType(Gadget)= #PB_GadgetType_Image
    SetGadgetState(Gadget,ImageID(Image))
  ElseIf GadgetType(Gadget)= #PB_GadgetType_Canvas
    SetGadgetAttribute(Gadget,#PB_Button_Image,ImageID(Image))
  EndIf 
EndProcedure

Procedure GetImage(Gadget)
  If GadgetType(Gadget)= #PB_GadgetType_ButtonImage
    ProcedureReturn GetGadgetAttribute(Gadget,#PB_Button_Image)
  ElseIf GadgetType(Gadget)= #PB_GadgetType_Image
    ProcedureReturn GetGadgetState(Gadget)
  ElseIf GadgetType(Gadget)= #PB_GadgetType_Canvas
    ProcedureReturn GetGadgetAttribute(Gadget,#PB_Button_Image)
  EndIf 
EndProcedure  

Procedure SetImageWhithMethod(Gadget,Image,Flag)
  #PB_Image_Stretch=1<<0
  #PB_Image_Center=1<<1
  #PB_Image_Mosaic=1<<2
  #PB_Image_Proportional=1<<3
  
  If IsImage(Image)
    If (Flag & #PB_Image_Stretch) = #PB_Image_Stretch
      StretchImage(Gadget,@Image) 
    ElseIf (Flag & #PB_Image_Center) = #PB_Image_Center
      CenterImage(Gadget,@Image)
    ElseIf (Flag & #PB_Image_Mosaic) = #PB_Image_Mosaic
      MosaicImage(Gadget,@Image)
    ElseIf (Flag & #PB_Image_Proportional) = #PB_Image_Proportional
      ProportionalImage(Gadget,@Image)
    EndIf
    
    If GadgetType(Gadget)= #PB_GadgetType_Canvas
      Protected CanvasColor = GetSysColor_( #COLOR_BTNFACE )
       If (ImageWidth(Image) >0 And ImageHeight(Image) >0) And StartDrawing(CanvasOutput(Gadget))
         Box(0, 0, OutputWidth(),OutputHeight(), CanvasColor)
         DrawAlphaImage(ImageID(Image),0,0)
         StopDrawing()
       EndIf
    Else
      SetImage(Gadget,Image)
    EndIf
  EndIf
EndProcedure
;---------------------------------------- 



Procedure ImageGadgetEx(Gadget,x,y,w,h,Image=-1,Flag=#False)
  Protected.i GadgetID,NewFlag
  #PB_Image_Single =1<<1
  #PB_Image_Flat =1<<2
  
  
  GadgetID=CanvasGadget(Gadget,x,y,w,h) :If Gadget=#PB_Any :Gadget=GadgetID :EndIf
  ;SetWindowTheme_(GadgetID(Gadget), @"", @"") ; отключаем тему
  SetImageWhithMethod(Gadget,Image,Flag)
  
  If Flag & #PB_Image_Border :NewFlag=13110 :EndIf 
  If Flag & #PB_Image_Single :NewFlag=131100 :EndIf 
  If Flag & #PB_Image_Raised :NewFlag=131101 :EndIf
  If Flag & #PB_Image_Flat   :NewFlag=1<<23 :EndIf
  CompilerIf #PB_Compiler_OS = #PB_OS_Windows
    If Flag & #PB_Image_Flat
      SetWindowLongPtr_(GadgetID(Gadget), #GWL_STYLE, GetWindowLong_(GadgetID(Gadget), #GWL_STYLE)|NewFlag)
    EndIf 
    SetWindowLongPtr_(GadgetID(Gadget), #GWL_EXSTYLE, GetWindowLong_(GadgetID(Gadget), #GWL_EXSTYLE)|NewFlag)
    SetWindowPos_(GadgetID(Gadget), 0, 0, 0, 0, 0, #SWP_FRAMECHANGED| #SWP_DRAWFRAME| #SWP_NOMOVE| #SWP_NOSIZE| #SWP_NOZORDER)
  CompilerEndIf
  ProcedureReturn GadgetID(Gadget)  
EndProcedure  


Enumeration #PB_Event_FirstCustomValue
  #PB_EventType_Size
EndEnumeration

Procedure ResizeGadget2(Gadget,x,y,w,h)
  ResizeGadget(Gadget,x,y,w,h)
  PostEvent(#PB_Event_Gadget,EventWindow(),Gadget,#PB_EventType_Size)
EndProcedure

Macro ResizeGadget(Gadget,x,y,w,h)
  ResizeGadget2(Gadget,x,y,w,h)
EndMacro




Procedure OpenWindow_0(x = 0, y = 0, width = 330, height = 150)
  Window_0 = OpenWindow(#PB_Any, x, y, width, height, "Center", #PB_Window_SystemMenu| #PB_Window_SizeGadget)
  
  
  ImageGadgetEx(0, 5, 5, 320, 140,-1,#PB_Image_Flat)
  SetImageWhithMethod(0,png,#PB_Image_Center)
  
EndProcedure

Procedure OpenWindow_1(x = 0, y = 200, width = 330, height = 150)
  Window_1 = OpenWindow(#PB_Any, x, y, width, height, "Stretch", #PB_Window_SystemMenu | #PB_Window_SizeGadget)
  
  
  ImageGadgetEx(1, 5, 5, 320, 140,-1,#PB_Image_Single)
  SetImageWhithMethod(1,png,#PB_Image_Stretch)
  
EndProcedure

Procedure OpenWindow_2(x = 0, y = 400, width = 330, height = 150)
  Window_2 = OpenWindow(#PB_Any, x, y, width, height, "Mosaic", #PB_Window_SystemMenu | #PB_Window_SizeGadget)
  
  
  ImageGadgetEx(2, 5, 5, 320, 140,-1,#PB_Image_Raised)
  SetImageWhithMethod(2,png,#PB_Image_Mosaic)
  
EndProcedure

Procedure OpenWindow_3(x = 0, y = 0, width = 330, height = 150)
  Window_3 = OpenWindow(#PB_Any, x, y, width, height, "Proportional", #PB_Window_SystemMenu | #PB_Window_SizeGadget|#PB_Window_ScreenCentered)
  
  
  ImageGadgetEx(3, 5, 5, 320, 140,-1,#PB_Image_Border)
  SetImageWhithMethod(3,png,#PB_Image_Proportional)
  
EndProcedure



OpenWindow_0()
OpenWindow_1()

OpenWindow_2()
OpenWindow_3()



Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      End
    Case #PB_Event_Gadget
      If EventType()= #PB_EventType_Size
        Debug EventGadget()
      EndIf
    Case #PB_Event_SizeWindow
      CompilerIf #PB_Compiler_OS=#PB_OS_Windows
        RedrawWindow_(WindowID(EventWindow()), 0, 0, #RDW_ALLCHILDREN|#RDW_UPDATENOW)
      CompilerEndIf
      SmartWindowRefresh(EventWindow(),#True)
      
      If EventWindow()=Window_0
        ResizeGadget(0,#PB_Ignore,#PB_Ignore,WindowWidth(Window_0)-10,WindowHeight(Window_0)-10)
        SetImageWhithMethod(0,png,#PB_Image_Center)
      EndIf
      If EventWindow()=Window_1
        ResizeGadget(1,#PB_Ignore,#PB_Ignore,WindowWidth(Window_1)-10,WindowHeight(Window_1)-10)
        SetImageWhithMethod(1,png,#PB_Image_Stretch)
      EndIf
      If EventWindow()=Window_2
        ResizeGadget(2,#PB_Ignore,#PB_Ignore,WindowWidth(Window_2)-10,WindowHeight(Window_2)-10)
        SetImageWhithMethod(2,png,#PB_Image_Mosaic)
      EndIf
      If EventWindow()=Window_3
        ResizeGadget(3,#PB_Ignore,#PB_Ignore,WindowWidth(Window_3)-10,WindowHeight(Window_3)-10)
        SetImageWhithMethod(3,png,#PB_Image_Proportional)
      EndIf
  EndSelect
ForEver


DataSection
  p:
  Data.b $89,$50,$4E,$47,$0D,$0A,$1A,$0A,$00,$00,$00,$0D,$49,$48,$44,$52,$00,$00,$00,$10
  Data.b $00,$00,$00,$10,$08,$06,$00,$00,$00,$1F,$F3,$FF,$61,$00,$00,$02,$0D,$49,$44,$41
  Data.b $54,$38,$8D,$95,$91,$B1,$6B,$1A,$61,$18,$C6,$9F,$3B,$BE,$FB,$C0,$03,$6F,$38,$6F
  Data.b $38,$24,$14,$CD,$62,$14,$37,$C5,$21,$04,$11,$AC,$01,$43,$71,$0B,$84,$4E,$21,$43
  Data.b $C6,$CB,$2E,$08,$86,$24,$84,$E0,$94,$FF,$20,$90,$A4,$C3,$8D,$2E,$2E,$1D,$22,$17
  Data.b $30,$7A,$82,$06,$6C,$3A,$18,$AB,$74,$C8,$2D,$D5,$A1,$43,$D0,$0F,$73,$5F,$97,$1A
  Data.b $0A,$D5,$36,$FE,$B6,$F7,$E5,$79,$7E,$C3,$FB,$0A,$98,$43,$2E,$97,$D3,$44,$51,$7C
  Data.b $0F,$40,$01,$F0,$D3,$75,$DD,$CF,$E5,$72,$F9,$C7,$BC,$EC,$5C,$62,$B1,$D8,$8E,$65
  Data.b $59,$F6,$70,$38,$E4,$96,$65,$D9,$B1,$58,$6C,$E7,$CD,$65,$00,$50,$55,$75,$DF,$71
  Data.b $1C,$4E,$29,$CD,$3B,$8E,$C3,$55,$55,$DD,$5F,$4A,$00,$60,$CB,$34,$4D,$BB,$DF,$FF
  Data.b $C6,$4D,$D3,$B4,$01,$6C,$2D,$2B,$F8,$00,$C0,$78,$78,$F8,$C2,$01,$18,$BF,$E7,$B9
  Data.b $88,$0B,$F6,$91,$5E,$EF,$F1,$7C,$34,$1A,$A1,$D7,$7B,$3C,$07,$10,$59,$4A,$40,$08
  Data.b $79,$0A,$85,$D6,$0A,$00,$10,$0A,$AD,$15,$08,$21,$4F,$8B,$04,$24,$1A,$8D,$7E,$14
  Data.b $04,$E1,$DD,$6C,$C1,$39,$FF,$DE,$E9,$74,$AE,$08,$21,$79,$C6,$18,$00,$B8,$D3,$E9
  Data.b $F4,$6A,$41,$EE,$13,$61,$8C,$AD,$36,$1A,$8D,$A3,$66,$B3,$39,$08,$06,$83,$81,$6C
  Data.b $36,$5B,$00,$00,$D7,$75,$9F,$5F,$5E,$5C,$B8,$AE,$FB,$0C,$00,$8C,$B1,$D5,$4A,$A5
  Data.b $72,$D4,$EF,$F7,$07,$F1,$78,$3C,$90,$48,$24,$0A,$00,$20,$4E,$26,$13,$B1,$5A,$AD
  Data.b $0E,$74,$5D,$0F,$18,$C6,$C1,$C5,$78,$3C,$6E,$CF,$04,$80,$F8,$2A,$18,$8F,$C7,$6D
  Data.b $C3,$38,$B8,$D0,$75,$3D,$50,$AD,$56,$07,$93,$C9,$44,$04,$00,$91,$31,$26,$F9,$FD
  Data.b $2B,$81,$4C,$26,$73,$5C,$2C,$1E,$EE,$86,$C3,$91,$6D,$5D,$D7,$D7,$05,$41,$20,$A2
  Data.b $28,$41,$10,$04,$A2,$EB,$FA,$7A,$38,$1C,$D9,$2E,$16,$0F,$77,$33,$99,$CC,$B1,$DF
  Data.b $BF,$12,$60,$8C,$49,$00,$00,$4D,$D3,$F6,$7C,$3E,$DF,$89,$A6,$69,$39,$9F,$CF,$77
  Data.b $52,$AB,$D9,$3C,$9D,$DE,$BC,$A4,$94,$E6,$6F,$6E,$EA,$9C,$52,$9A,$4F,$A7,$37,$2F
  Data.b $6B,$35,$9B,$FF,$99,$D3,$34,$6D,$EF,$AF,$8B,$2A,$8A,$B2,$E1,$F5,$7A,$4F,$EB,$F5
  Data.b $7B,$9E,$4A,$A5,$AF,$6F,$6F,$DB,$3C,$95,$4A,$5F,$D7,$EB,$F7,$DC,$EB,$F5,$9E,$2A
  Data.b $8A,$B2,$B1,$E8,$1B,$AF,$C8,$B2,$9C,$F4,$78,$3C,$67,$AD,$56,$97,$DF,$DD,$7D,$E5
  Data.b $AD,$56,$97,$7B,$3C,$9E,$33,$59,$96,$93,$FF,$2D,$CF,$A0,$94,$26,$25,$49,$2A,$D9
  Data.b $76,$97,$4B,$92,$54,$A2,$94,$BE,$BD,$3C,$83,$10,$92,$24,$84,$94,$08,$21,$FF,$2C
  Data.b $FF,$02,$6A,$A2,$D8,$0A,$79,$12,$C2,$C4,$00,$00,$00,$00,$49,$45,$4E,$44,$AE,$42
  Data.b $60,$82
  pend:
EndDataSection

DataSection
  i:
  Data.b $00,$00,$01,$00,$01,$00,$10,$10,$00,$00,$01,$00,$20,$00,$68,$04,$00,$00,$16,$00
  Data.b $00,$00,$28,$00,$00,$00,$10,$00,$00,$00,$20,$00,$00,$00,$01,$00,$20,$00,$00,$00
  Data.b $00,$00,$00,$04,$00,$00,$12,$0B,$00,$00,$12,$0B,$00,$00,$00,$00,$00,$00,$00,$00
  Data.b $00,$00,$13,$13,$13,$00,$11,$11,$11,$00,$13,$13,$13,$00,$0D,$0D,$0D,$00,$09,$09
  Data.b $09,$00,$05,$05,$05,$00,$04,$04,$04,$3F,$04,$04,$04,$8A,$04,$04,$04,$3F,$05,$05
  Data.b $05,$00,$09,$09,$09,$00,$0D,$0D,$0D,$00,$13,$13,$13,$00,$11,$11,$11,$00,$13,$13
  Data.b $13,$00,$FF,$FF,$FF,$00,$13,$13,$13,$00,$11,$11,$11,$00,$13,$13,$13,$00,$0D,$0D
  Data.b $0D,$00,$09,$09,$09,$00,$06,$06,$06,$3F,$05,$05,$05,$8A,$DB,$CB,$CB,$FF,$05,$05
  Data.b $05,$8A,$06,$06,$06,$3F,$09,$09,$09,$00,$0D,$0D,$0D,$00,$13,$13,$13,$00,$11,$11
  Data.b $11,$00,$13,$13,$13,$00,$FF,$FF,$FF,$00,$13,$13,$13,$00,$11,$11,$11,$00,$13,$13
  Data.b $13,$00,$0D,$0D,$0D,$00,$0A,$0A,$0A,$3E,$09,$09,$09,$89,$DB,$CF,$CF,$FF,$D7,$C8
  Data.b $C8,$FF,$DB,$CF,$CF,$FF,$09,$09,$09,$89,$0A,$0A,$0A,$3E,$0D,$0D,$0D,$00,$13,$13
  Data.b $13,$00,$11,$11,$11,$00,$13,$13,$13,$00,$FF,$FF,$FF,$00,$13,$13,$13,$00,$11,$11
  Data.b $11,$00,$13,$13,$13,$00,$0E,$0E,$0E,$3D,$0D,$0D,$0D,$87,$D1,$C9,$C9,$FF,$43,$40
  Data.b $40,$A5,$D0,$C4,$C4,$FF,$43,$40,$40,$A5,$D1,$C9,$C9,$FF,$0D,$0D,$0D,$87,$0E,$0E
  Data.b $0E,$3D,$13,$13,$13,$00,$11,$11,$11,$00,$13,$13,$13,$00,$FF,$FF,$FF,$00,$14,$14
  Data.b $14,$63,$13,$13,$13,$84,$14,$14,$14,$4F,$13,$13,$13,$84,$CB,$C7,$C7,$FF,$46,$43
  Data.b $43,$A3,$06,$06,$06,$7B,$C9,$C0,$C0,$FF,$06,$06,$06,$7B,$46,$43,$43,$A3,$CB,$C7
  Data.b $C7,$FF,$13,$13,$13,$84,$14,$14,$14,$4F,$13,$13,$13,$84,$14,$14,$14,$63,$FF,$FF
  Data.b $FF,$00,$19,$19,$19,$82,$CD,$CB,$CB,$FF,$19,$19,$19,$82,$CD,$CB,$CB,$FF,$48,$47
  Data.b $47,$A1,$18,$18,$18,$3B,$01,$01,$01,$6B,$C2,$BD,$BD,$FF,$01,$01,$01,$6B,$18,$18
  Data.b $18,$3B,$48,$47,$47,$A1,$CD,$CB,$CB,$FF,$19,$19,$19,$82,$CD,$CB,$CB,$FF,$19,$19
  Data.b $19,$82,$FF,$FF,$FF,$00,$1F,$1F,$1F,$7F,$B1,$B1,$B1,$DF,$D4,$D4,$D4,$FF,$4C,$4B
  Data.b $4B,$9F,$1E,$1E,$1E,$4C,$0D,$0D,$0D,$00,$00,$00,$00,$67,$BD,$BB,$BB,$FF,$00,$00
  Data.b $00,$67,$0D,$0D,$0D,$00,$1E,$1E,$1E,$4C,$4C,$4B,$4B,$9F,$D4,$D4,$D4,$FF,$B1,$B1
  Data.b $B1,$DF,$1F,$1F,$1F,$7F,$FF,$FF,$FF,$00,$26,$26,$26,$7C,$F0,$F0,$F0,$FF,$BC,$BC
  Data.b $BC,$DF,$DD,$DD,$DD,$FF,$26,$26,$26,$7C,$14,$14,$14,$00,$02,$02,$02,$70,$BB,$BB
  Data.b $BB,$FF,$02,$02,$02,$70,$14,$14,$14,$00,$26,$26,$26,$7C,$DD,$DD,$DD,$FF,$BC,$BC
  Data.b $BC,$DF,$F0,$F0,$F0,$FF,$26,$26,$26,$7C,$FF,$FF,$FF,$00,$2C,$2C,$2C,$5B,$2D,$2D
  Data.b $2D,$78,$2D,$2D,$2D,$78,$2D,$2D,$2D,$78,$2C,$2C,$2C,$5B,$18,$18,$18,$00,$04,$04
  Data.b $04,$7A,$BD,$BE,$BE,$FF,$04,$04,$04,$7A,$18,$18,$18,$00,$2C,$2C,$2C,$5B,$2D,$2D
  Data.b $2D,$78,$2D,$2D,$2D,$78,$2D,$2D,$2D,$78,$2C,$2C,$2C,$5B,$FF,$FF,$FF,$00,$2D,$2D
  Data.b $2D,$00,$2E,$2E,$2E,$00,$2E,$2E,$2E,$00,$2E,$2E,$2E,$00,$23,$23,$23,$00,$04,$04
  Data.b $04,$5D,$04,$04,$04,$7C,$C3,$C4,$C4,$FF,$04,$04,$04,$7C,$04,$04,$04,$5D,$23,$23
  Data.b $23,$00,$2E,$2E,$2E,$00,$2E,$2E,$2E,$00,$2E,$2E,$2E,$00,$2D,$2D,$2D,$00,$FF,$FF
  Data.b $FF,$00,$2D,$2D,$2D,$00,$2E,$2E,$2E,$00,$2E,$2E,$2E,$00,$23,$23,$23,$00,$00,$00
  Data.b $00,$00,$00,$00,$00,$77,$DC,$DD,$DD,$FF,$C3,$C4,$C4,$FF,$DC,$DD,$DD,$FF,$00,$00
  Data.b $00,$77,$00,$00,$00,$00,$23,$23,$23,$00,$2E,$2E,$2E,$00,$2E,$2E,$2E,$00,$2D,$2D
  Data.b $2D,$00,$FF,$FF,$FF,$00,$2D,$2D,$2D,$00,$2E,$2E,$2E,$00,$2E,$2E,$2E,$00,$00,$00
  Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$4D,$00,$00,$00,$6E,$D5,$D6,$D6,$FF,$00,$00
  Data.b $00,$6E,$00,$00,$00,$4D,$00,$00,$00,$00,$00,$00,$00,$00,$2E,$2E,$2E,$00,$2E,$2E
  Data.b $2E,$00,$2D,$2D,$2D,$00,$FF,$FF,$FF,$00,$2D,$2D,$2D,$00,$23,$23,$23,$00,$0C,$0C
  Data.b $0C,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$4B,$AA,$AA,$AA,$CB,$DE,$DF
  Data.b $DF,$FF,$AA,$AA,$AA,$CB,$00,$00,$00,$4B,$00,$00,$00,$00,$00,$00,$00,$00,$0C,$0C
  Data.b $0C,$00,$23,$23,$23,$00,$2D,$2D,$2D,$00,$FF,$FF,$FF,$00,$23,$23,$23,$00,$12,$12
  Data.b $12,$00,$12,$12,$12,$00,$12,$12,$12,$00,$12,$12,$12,$00,$12,$12,$12,$66,$E7,$E7
  Data.b $E7,$FF,$06,$06,$06,$7A,$E7,$E7,$E7,$FF,$12,$12,$12,$66,$12,$12,$12,$00,$12,$12
  Data.b $12,$00,$12,$12,$12,$00,$12,$12,$12,$00,$23,$23,$23,$00,$FF,$FF,$FF,$00,$33,$33
  Data.b $33,$00,$33,$33,$33,$00,$33,$33,$33,$00,$33,$33,$33,$00,$33,$33,$33,$00,$33,$33
  Data.b $33,$59,$C3,$C3,$C3,$CA,$ED,$ED,$ED,$FF,$C3,$C3,$C3,$CA,$33,$33,$33,$59,$33,$33
  Data.b $33,$00,$33,$33,$33,$00,$33,$33,$33,$00,$33,$33,$33,$00,$33,$33,$33,$00,$FF,$FF
  Data.b $FF,$00,$4B,$4B,$4B,$00,$4B,$4B,$4B,$00,$4B,$4B,$4B,$00,$4B,$4B,$4B,$00,$4B,$4B
  Data.b $4B,$00,$4E,$4E,$4E,$14,$50,$50,$50,$59,$50,$50,$50,$66,$50,$50,$50,$59,$4E,$4E
  Data.b $4E,$14,$4B,$4B,$4B,$00,$4B,$4B,$4B,$00,$4B,$4B,$4B,$00,$4B,$4B,$4B,$00,$4B,$4B
  Data.b $4B,$00,$FF,$FF,$FF,$00,$FC,$7F,$00,$00,$F8,$3F,$00,$00,$F0,$1F,$00,$00,$E0,$0F
  Data.b $00,$00,$00,$01,$00,$00,$00,$01,$00,$00,$04,$41,$00,$00,$04,$41,$00,$00,$04,$41
  Data.b $00,$00,$F8,$3F,$00,$00,$F8,$3F,$00,$00,$F8,$3F,$00,$00,$F8,$3F,$00,$00,$F8,$3F
  Data.b $00,$00,$F8,$3F,$00,$00,$F8,$3F,$00,$00
  iend:
EndDataSection
does not work :?: :P

Code: Select all

;- // EXAMPLE
    UseJPEGImageDecoder()
    UsePNGImageDecoder()

Global ico = CatchImage(#PB_Any, ?i, 1150)
    Global png = CatchImage(#PB_Any, ?p, 582)
   
    ;-// FUNCTIONS

    Procedure MB_CenterPos(ContainerWidth, ObjectWidth)
      ProcedureReturn (ContainerWidth - ObjectWidth ) / 2
    EndProcedure


    #MB_RESIZEIMAGE_FILL    = 0
    #MB_RESIZEIMAGE_FIT     = 1
    #MB_RESIZEIMAGE_STRETCH = 2
    #MB_RESIZEIMAGE_TILE    = 3
    #MB_RESIZEIMAGE_CENTER  = 4

    Structure MB_ResizeImageSTR
      Image.i
      Width.i
      Height.i
      Mode.i
      Color.i
      Result.i
    EndStructure


    Procedure MB_ResizeImageThread(*MB_ResizeImageVar.MB_ResizeImageSTR)
      Protected Image, Width, Height, Mode, Color
      Protected ImageW, ImageH, WidthP.f , HeightP.f , WidthR, HeightR, GetP.f
     Debug 555555
      Image   = *MB_ResizeImageVar\Image
      Width   = *MB_ResizeImageVar\Width
      Height  = *MB_ResizeImageVar\Height
      Mode    = *MB_ResizeImageVar\Mode
      Color   = *MB_ResizeImageVar\Color
     
      If IsImage(Image)
       
        ImageW = ImageWidth(Image)
        ImageH = ImageHeight(Image)
       
        WidthP  = ImageW / Width
        HeightP = ImageH / Height
       
        WidthR  = Width
        HeightR = Height
       
        Select Mode
            Case #MB_RESIZEIMAGE_FILL
             
              WidthR  = Width
              HeightR = ImageH / WidthP
             
              If HeightR < Height
               
                HeightR = Height
                WidthR  = ImageW / HeightP
               
              EndIf
             
            Case #MB_RESIZEIMAGE_FIT
             
              WidthR  = Width
              HeightR = ImageH / WidthP
             
            Case #MB_RESIZEIMAGE_STRETCH
             
              WidthR  = Width
              HeightR = Height
             
            Case #MB_RESIZEIMAGE_TILE
             
              WidthR  = ImageW
              HeightR = ImageH
             
            Case #MB_RESIZEIMAGE_CENTER
             
              WidthR  = ImageW
              HeightR = ImageH
             
        EndSelect 
         
        If Width = 0
          Width = WidthR
        EndIf
       
        If Height = 0
          Height = HeightR
        EndIf
       
        ResizeImage(Image,WidthR,HeightR)
        NewImage = CreateImage(#PB_Any,Width,Height,32,Color);,#PB_Image_Transparent)
          StartDrawing(ImageOutput(NewImage))
          ;DrawingMode(#PB_2DDrawing_AlphaChannel|#PB_2DDrawing_AllChannels) 
          
          Box(0,0,Width,Height,Color)
         
          If Mode = #MB_RESIZEIMAGE_FIT
           
            DrawAlphaImage(ImageID(Image),0,0)
           
          ElseIf Mode = #MB_RESIZEIMAGE_CENTER
           
            DrawAlphaImage(ImageID(Image),MB_CenterPos(Width,WidthR),MB_CenterPos(Height,HeightR));,125)
           
          ElseIf Mode = #MB_RESIZEIMAGE_TILE
                   
            For x = 0 To Round( Width / WidthR , #PB_Round_Down)
              For y = 0 To Round( Height / HeightR , #PB_Round_Down)
                  DrawAlphaImage(ImageID(Image),x * WidthR,y * HeightR)
              Next
            Next

          Else
           
            DrawAlphaImage(ImageID(Image),0,0)
           
          EndIf
        StopDrawing()
     
        If IsImage(Image)
          FreeImage(Image)
        EndIf
       
      EndIf
     
      *MB_ResizeImageVar\Result = NewImage
      ProcedureReturn 1
    EndProcedure

    Procedure MB_ResizeImage(Image,Width=0,Height=0,Mode=#MB_RESIZEIMAGE_FILL,Color=#PB_Image_Transparent)
     
      Protected Thread, Result
      Protected *MB_ResizeImageVar.MB_ResizeImageSTR
     
      *MB_ResizeImageVar.MB_ResizeImageSTR = AllocateMemory(SizeOf(MB_ResizeImageSTR))
      *MB_ResizeImageVar\Image           = Image
      *MB_ResizeImageVar\Width           = Width
      *MB_ResizeImageVar\Height          = Height
      *MB_ResizeImageVar\Mode            = Mode
      *MB_ResizeImageVar\Color           = Color
     
      Thread = CreateThread(@MB_ResizeImageThread(),*MB_ResizeImageVar)
      WaitThread(Thread)
     
      Result = *MB_ResizeImageVar\Result
      FreeMemory(*MB_ResizeImageVar)

      ProcedureReturn Result
    EndProcedure


     If OpenWindow(0,0,0,320,240,"",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)

        ;file$=OpenFileRequester("","*.*","*.*",0)
        pic=png;LoadImage(#PB_Any,file$)
        fixpic=MB_ResizeImage(pic,320,240,#MB_RESIZEIMAGE_TILE);,#Red)
        ImageGadget(0,0,0,320,0,ImageID(fixpic))   
        Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow

    EndIf


 DataSection
     p:
     Data.b $89,$50,$4E,$47,$0D,$0A,$1A,$0A,$00,$00,$00,$0D,$49,$48,$44,$52,$00,$00,$00,$10
     Data.b $00,$00,$00,$10,$08,$06,$00,$00,$00,$1F,$F3,$FF,$61,$00,$00,$02,$0D,$49,$44,$41
     Data.b $54,$38,$8D,$95,$91,$B1,$6B,$1A,$61,$18,$C6,$9F,$3B,$BE,$FB,$C0,$03,$6F,$38,$6F
     Data.b $38,$24,$14,$CD,$62,$14,$37,$C5,$21,$04,$11,$AC,$01,$43,$71,$0B,$84,$4E,$21,$43
     Data.b $C6,$CB,$2E,$08,$86,$24,$84,$E0,$94,$FF,$20,$90,$A4,$C3,$8D,$2E,$2E,$1D,$22,$17
     Data.b $30,$7A,$82,$06,$6C,$3A,$18,$AB,$74,$C8,$2D,$D5,$A1,$43,$D0,$0F,$73,$5F,$97,$1A
     Data.b $0A,$D5,$36,$FE,$B6,$F7,$E5,$79,$7E,$C3,$FB,$0A,$98,$43,$2E,$97,$D3,$44,$51,$7C
     Data.b $0F,$40,$01,$F0,$D3,$75,$DD,$CF,$E5,$72,$F9,$C7,$BC,$EC,$5C,$62,$B1,$D8,$8E,$65
     Data.b $59,$F6,$70,$38,$E4,$96,$65,$D9,$B1,$58,$6C,$E7,$CD,$65,$00,$50,$55,$75,$DF,$71
     Data.b $1C,$4E,$29,$CD,$3B,$8E,$C3,$55,$55,$DD,$5F,$4A,$00,$60,$CB,$34,$4D,$BB,$DF,$FF
     Data.b $C6,$4D,$D3,$B4,$01,$6C,$2D,$2B,$F8,$00,$C0,$78,$78,$F8,$C2,$01,$18,$BF,$E7,$B9
     Data.b $88,$0B,$F6,$91,$5E,$EF,$F1,$7C,$34,$1A,$A1,$D7,$7B,$3C,$07,$10,$59,$4A,$40,$08
     Data.b $79,$0A,$85,$D6,$0A,$00,$10,$0A,$AD,$15,$08,$21,$4F,$8B,$04,$24,$1A,$8D,$7E,$14
     Data.b $04,$E1,$DD,$6C,$C1,$39,$FF,$DE,$E9,$74,$AE,$08,$21,$79,$C6,$18,$00,$B8,$D3,$E9
     Data.b $F4,$6A,$41,$EE,$13,$61,$8C,$AD,$36,$1A,$8D,$A3,$66,$B3,$39,$08,$06,$83,$81,$6C
     Data.b $36,$5B,$00,$00,$D7,$75,$9F,$5F,$5E,$5C,$B8,$AE,$FB,$0C,$00,$8C,$B1,$D5,$4A,$A5
     Data.b $72,$D4,$EF,$F7,$07,$F1,$78,$3C,$90,$48,$24,$0A,$00,$20,$4E,$26,$13,$B1,$5A,$AD
     Data.b $0E,$74,$5D,$0F,$18,$C6,$C1,$C5,$78,$3C,$6E,$CF,$04,$80,$F8,$2A,$18,$8F,$C7,$6D
     Data.b $C3,$38,$B8,$D0,$75,$3D,$50,$AD,$56,$07,$93,$C9,$44,$04,$00,$91,$31,$26,$F9,$FD
     Data.b $2B,$81,$4C,$26,$73,$5C,$2C,$1E,$EE,$86,$C3,$91,$6D,$5D,$D7,$D7,$05,$41,$20,$A2
     Data.b $28,$41,$10,$04,$A2,$EB,$FA,$7A,$38,$1C,$D9,$2E,$16,$0F,$77,$33,$99,$CC,$B1,$DF
     Data.b $BF,$12,$60,$8C,$49,$00,$00,$4D,$D3,$F6,$7C,$3E,$DF,$89,$A6,$69,$39,$9F,$CF,$77
     Data.b $52,$AB,$D9,$3C,$9D,$DE,$BC,$A4,$94,$E6,$6F,$6E,$EA,$9C,$52,$9A,$4F,$A7,$37,$2F
     Data.b $6B,$35,$9B,$FF,$99,$D3,$34,$6D,$EF,$AF,$8B,$2A,$8A,$B2,$E1,$F5,$7A,$4F,$EB,$F5
     Data.b $7B,$9E,$4A,$A5,$AF,$6F,$6F,$DB,$3C,$95,$4A,$5F,$D7,$EB,$F7,$DC,$EB,$F5,$9E,$2A
     Data.b $8A,$B2,$B1,$E8,$1B,$AF,$C8,$B2,$9C,$F4,$78,$3C,$67,$AD,$56,$97,$DF,$DD,$7D,$E5
     Data.b $AD,$56,$97,$7B,$3C,$9E,$33,$59,$96,$93,$FF,$2D,$CF,$A0,$94,$26,$25,$49,$2A,$D9
     Data.b $76,$97,$4B,$92,$54,$A2,$94,$BE,$BD,$3C,$83,$10,$92,$24,$84,$94,$08,$21,$FF,$2C
     Data.b $FF,$02,$6A,$A2,$D8,$0A,$79,$12,$C2,$C4,$00,$00,$00,$00,$49,$45,$4E,$44,$AE,$42
     Data.b $60,$82
     pend:
    EndDataSection

    DataSection
     i:
     Data.b $00,$00,$01,$00,$01,$00,$10,$10,$00,$00,$01,$00,$20,$00,$68,$04,$00,$00,$16,$00
     Data.b $00,$00,$28,$00,$00,$00,$10,$00,$00,$00,$20,$00,$00,$00,$01,$00,$20,$00,$00,$00
     Data.b $00,$00,$00,$04,$00,$00,$12,$0B,$00,$00,$12,$0B,$00,$00,$00,$00,$00,$00,$00,$00
     Data.b $00,$00,$13,$13,$13,$00,$11,$11,$11,$00,$13,$13,$13,$00,$0D,$0D,$0D,$00,$09,$09
     Data.b $09,$00,$05,$05,$05,$00,$04,$04,$04,$3F,$04,$04,$04,$8A,$04,$04,$04,$3F,$05,$05
     Data.b $05,$00,$09,$09,$09,$00,$0D,$0D,$0D,$00,$13,$13,$13,$00,$11,$11,$11,$00,$13,$13
     Data.b $13,$00,$FF,$FF,$FF,$00,$13,$13,$13,$00,$11,$11,$11,$00,$13,$13,$13,$00,$0D,$0D
     Data.b $0D,$00,$09,$09,$09,$00,$06,$06,$06,$3F,$05,$05,$05,$8A,$DB,$CB,$CB,$FF,$05,$05
     Data.b $05,$8A,$06,$06,$06,$3F,$09,$09,$09,$00,$0D,$0D,$0D,$00,$13,$13,$13,$00,$11,$11
     Data.b $11,$00,$13,$13,$13,$00,$FF,$FF,$FF,$00,$13,$13,$13,$00,$11,$11,$11,$00,$13,$13
     Data.b $13,$00,$0D,$0D,$0D,$00,$0A,$0A,$0A,$3E,$09,$09,$09,$89,$DB,$CF,$CF,$FF,$D7,$C8
     Data.b $C8,$FF,$DB,$CF,$CF,$FF,$09,$09,$09,$89,$0A,$0A,$0A,$3E,$0D,$0D,$0D,$00,$13,$13
     Data.b $13,$00,$11,$11,$11,$00,$13,$13,$13,$00,$FF,$FF,$FF,$00,$13,$13,$13,$00,$11,$11
     Data.b $11,$00,$13,$13,$13,$00,$0E,$0E,$0E,$3D,$0D,$0D,$0D,$87,$D1,$C9,$C9,$FF,$43,$40
     Data.b $40,$A5,$D0,$C4,$C4,$FF,$43,$40,$40,$A5,$D1,$C9,$C9,$FF,$0D,$0D,$0D,$87,$0E,$0E
     Data.b $0E,$3D,$13,$13,$13,$00,$11,$11,$11,$00,$13,$13,$13,$00,$FF,$FF,$FF,$00,$14,$14
     Data.b $14,$63,$13,$13,$13,$84,$14,$14,$14,$4F,$13,$13,$13,$84,$CB,$C7,$C7,$FF,$46,$43
     Data.b $43,$A3,$06,$06,$06,$7B,$C9,$C0,$C0,$FF,$06,$06,$06,$7B,$46,$43,$43,$A3,$CB,$C7
     Data.b $C7,$FF,$13,$13,$13,$84,$14,$14,$14,$4F,$13,$13,$13,$84,$14,$14,$14,$63,$FF,$FF
     Data.b $FF,$00,$19,$19,$19,$82,$CD,$CB,$CB,$FF,$19,$19,$19,$82,$CD,$CB,$CB,$FF,$48,$47
     Data.b $47,$A1,$18,$18,$18,$3B,$01,$01,$01,$6B,$C2,$BD,$BD,$FF,$01,$01,$01,$6B,$18,$18
     Data.b $18,$3B,$48,$47,$47,$A1,$CD,$CB,$CB,$FF,$19,$19,$19,$82,$CD,$CB,$CB,$FF,$19,$19
     Data.b $19,$82,$FF,$FF,$FF,$00,$1F,$1F,$1F,$7F,$B1,$B1,$B1,$DF,$D4,$D4,$D4,$FF,$4C,$4B
     Data.b $4B,$9F,$1E,$1E,$1E,$4C,$0D,$0D,$0D,$00,$00,$00,$00,$67,$BD,$BB,$BB,$FF,$00,$00
     Data.b $00,$67,$0D,$0D,$0D,$00,$1E,$1E,$1E,$4C,$4C,$4B,$4B,$9F,$D4,$D4,$D4,$FF,$B1,$B1
     Data.b $B1,$DF,$1F,$1F,$1F,$7F,$FF,$FF,$FF,$00,$26,$26,$26,$7C,$F0,$F0,$F0,$FF,$BC,$BC
     Data.b $BC,$DF,$DD,$DD,$DD,$FF,$26,$26,$26,$7C,$14,$14,$14,$00,$02,$02,$02,$70,$BB,$BB
     Data.b $BB,$FF,$02,$02,$02,$70,$14,$14,$14,$00,$26,$26,$26,$7C,$DD,$DD,$DD,$FF,$BC,$BC
     Data.b $BC,$DF,$F0,$F0,$F0,$FF,$26,$26,$26,$7C,$FF,$FF,$FF,$00,$2C,$2C,$2C,$5B,$2D,$2D
     Data.b $2D,$78,$2D,$2D,$2D,$78,$2D,$2D,$2D,$78,$2C,$2C,$2C,$5B,$18,$18,$18,$00,$04,$04
     Data.b $04,$7A,$BD,$BE,$BE,$FF,$04,$04,$04,$7A,$18,$18,$18,$00,$2C,$2C,$2C,$5B,$2D,$2D
     Data.b $2D,$78,$2D,$2D,$2D,$78,$2D,$2D,$2D,$78,$2C,$2C,$2C,$5B,$FF,$FF,$FF,$00,$2D,$2D
     Data.b $2D,$00,$2E,$2E,$2E,$00,$2E,$2E,$2E,$00,$2E,$2E,$2E,$00,$23,$23,$23,$00,$04,$04
     Data.b $04,$5D,$04,$04,$04,$7C,$C3,$C4,$C4,$FF,$04,$04,$04,$7C,$04,$04,$04,$5D,$23,$23
     Data.b $23,$00,$2E,$2E,$2E,$00,$2E,$2E,$2E,$00,$2E,$2E,$2E,$00,$2D,$2D,$2D,$00,$FF,$FF
     Data.b $FF,$00,$2D,$2D,$2D,$00,$2E,$2E,$2E,$00,$2E,$2E,$2E,$00,$23,$23,$23,$00,$00,$00
     Data.b $00,$00,$00,$00,$00,$77,$DC,$DD,$DD,$FF,$C3,$C4,$C4,$FF,$DC,$DD,$DD,$FF,$00,$00
     Data.b $00,$77,$00,$00,$00,$00,$23,$23,$23,$00,$2E,$2E,$2E,$00,$2E,$2E,$2E,$00,$2D,$2D
     Data.b $2D,$00,$FF,$FF,$FF,$00,$2D,$2D,$2D,$00,$2E,$2E,$2E,$00,$2E,$2E,$2E,$00,$00,$00
     Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$4D,$00,$00,$00,$6E,$D5,$D6,$D6,$FF,$00,$00
     Data.b $00,$6E,$00,$00,$00,$4D,$00,$00,$00,$00,$00,$00,$00,$00,$2E,$2E,$2E,$00,$2E,$2E
     Data.b $2E,$00,$2D,$2D,$2D,$00,$FF,$FF,$FF,$00,$2D,$2D,$2D,$00,$23,$23,$23,$00,$0C,$0C
     Data.b $0C,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$4B,$AA,$AA,$AA,$CB,$DE,$DF
     Data.b $DF,$FF,$AA,$AA,$AA,$CB,$00,$00,$00,$4B,$00,$00,$00,$00,$00,$00,$00,$00,$0C,$0C
     Data.b $0C,$00,$23,$23,$23,$00,$2D,$2D,$2D,$00,$FF,$FF,$FF,$00,$23,$23,$23,$00,$12,$12
     Data.b $12,$00,$12,$12,$12,$00,$12,$12,$12,$00,$12,$12,$12,$00,$12,$12,$12,$66,$E7,$E7
     Data.b $E7,$FF,$06,$06,$06,$7A,$E7,$E7,$E7,$FF,$12,$12,$12,$66,$12,$12,$12,$00,$12,$12
     Data.b $12,$00,$12,$12,$12,$00,$12,$12,$12,$00,$23,$23,$23,$00,$FF,$FF,$FF,$00,$33,$33
     Data.b $33,$00,$33,$33,$33,$00,$33,$33,$33,$00,$33,$33,$33,$00,$33,$33,$33,$00,$33,$33
     Data.b $33,$59,$C3,$C3,$C3,$CA,$ED,$ED,$ED,$FF,$C3,$C3,$C3,$CA,$33,$33,$33,$59,$33,$33
     Data.b $33,$00,$33,$33,$33,$00,$33,$33,$33,$00,$33,$33,$33,$00,$33,$33,$33,$00,$FF,$FF
     Data.b $FF,$00,$4B,$4B,$4B,$00,$4B,$4B,$4B,$00,$4B,$4B,$4B,$00,$4B,$4B,$4B,$00,$4B,$4B
     Data.b $4B,$00,$4E,$4E,$4E,$14,$50,$50,$50,$59,$50,$50,$50,$66,$50,$50,$50,$59,$4E,$4E
     Data.b $4E,$14,$4B,$4B,$4B,$00,$4B,$4B,$4B,$00,$4B,$4B,$4B,$00,$4B,$4B,$4B,$00,$4B,$4B
     Data.b $4B,$00,$FF,$FF,$FF,$00,$FC,$7F,$00,$00,$F8,$3F,$00,$00,$F0,$1F,$00,$00,$E0,$0F
     Data.b $00,$00,$00,$01,$00,$00,$00,$01,$00,$00,$04,$41,$00,$00,$04,$41,$00,$00,$04,$41
     Data.b $00,$00,$F8,$3F,$00,$00,$F8,$3F,$00,$00,$F8,$3F,$00,$00,$F8,$3F,$00,$00,$F8,$3F
     Data.b $00,$00,$F8,$3F,$00,$00,$F8,$3F,$00,$00
     iend:
    EndDataSection
Post Reply