Code: Select all
EnableExplicit
Procedure.s ImageHtml(Image.i)
  Protected img_w.i
  Protected img_h.i
  Protected html_size.i
  Protected *html
  Protected px.i
  Protected py.i
  Protected pw.i
  Protected ph.i
  Protected *offset.Long
  Protected color.i
  Protected index.i
  Protected buffer.s
  If IsImage(Image)
    If StartDrawing(ImageOutput(Image))
      img_w = OutputWidth()
      img_h = OutputHeight()
      buffer = "<table border=0 cellspacing=0 cellpadding=0 bgcolor=#FFFFFF width=" + Str(img_w) + " height=" + Str(img_h) + ">" + #CRLF$
      html_size = (img_h * (img_w * 88)) + 2
      *html = AllocateMemory(html_size)
      pw = img_w - 1
      ph = img_h - 1
      *offset = *html
      For py = 0 To ph
        CopyMemory(?str_tr_start,*offset,8)
        *offset + 8
        For px = 0 To pw
          color = Point(px,py)
          CopyMemory(?str_color_start,*offset,60)
          *offset + 60
          *offset\l = PeekL(?str_hex_table + (Red(color) << 2))
          *offset + 4
          *offset\l = PeekL(?str_hex_table + (Green(color) << 2))
          *offset + 4
          *offset\l = PeekL(?str_hex_table + (Blue(color) << 2))
          *offset + 4
          CopyMemory(?str_color_end,*offset,12)
          *offset + 12
        Next
        CopyMemory(?str_tr_end,*offset,14)
        *offset + 14
      Next
      StopDrawing()
      buffer + PeekS(*html) + "</table>"
      FreeMemory(*html)
      ProcedureReturn buffer
    EndIf
  EndIf
  ProcedureReturn #Null$
  str_tr_start:
  !db 0x3C,0x00,0x74,0x00,0x72,0x00,0x3E,0x00
  str_tr_end:
  !db 0x3C,0x00,0x2F,0x00,0x74,0x00,0x72,0x00,0x3E,0x00,0x0D,0x00,0x0A,0x00
  str_color_start:
  !db 0x3C,0x00,0x74,0x00,0x64,0x00,0x20,0x00,0x77,0x00,0x69,0x00,0x64,0x00,0x74,0x00
  !db 0x68,0x00,0x3D,0x00,0x31,0x00,0x20,0x00,0x68,0x00,0x65,0x00,0x69,0x00,0x67,0x00
  !db 0x68,0x00,0x74,0x00,0x3D,0x00,0x31,0x00,0x20,0x00,0x62,0x00,0x67,0x00,0x63,0x00
  !db 0x6F,0x00,0x6C,0x00,0x6F,0x00,0x72,0x00,0x3D,0x00,0x23,0x00
  str_color_end:
  !db 0x3E,0x00,0x3C,0x00,0x2F,0x00,0x74,0x00,0x64,0x00,0x3E,0x00  
  str_hex_table:
  !db 0x30,0x00,0x30,0x00,0x30,0x00,0x31,0x00,0x30,0x00,0x32,0x00,0x30,0x00,0x33,0x00
  !db 0x30,0x00,0x34,0x00,0x30,0x00,0x35,0x00,0x30,0x00,0x36,0x00,0x30,0x00,0x37,0x00
  !db 0x30,0x00,0x38,0x00,0x30,0x00,0x39,0x00,0x30,0x00,0x41,0x00,0x30,0x00,0x42,0x00
  !db 0x30,0x00,0x43,0x00,0x30,0x00,0x44,0x00,0x30,0x00,0x45,0x00,0x30,0x00,0x46,0x00
  !db 0x31,0x00,0x30,0x00,0x31,0x00,0x31,0x00,0x31,0x00,0x32,0x00,0x31,0x00,0x33,0x00
  !db 0x31,0x00,0x34,0x00,0x31,0x00,0x35,0x00,0x31,0x00,0x36,0x00,0x31,0x00,0x37,0x00
  !db 0x31,0x00,0x38,0x00,0x31,0x00,0x39,0x00,0x31,0x00,0x41,0x00,0x31,0x00,0x42,0x00
  !db 0x31,0x00,0x43,0x00,0x31,0x00,0x44,0x00,0x31,0x00,0x45,0x00,0x31,0x00,0x46,0x00
  !db 0x32,0x00,0x30,0x00,0x32,0x00,0x31,0x00,0x32,0x00,0x32,0x00,0x32,0x00,0x33,0x00
  !db 0x32,0x00,0x34,0x00,0x32,0x00,0x35,0x00,0x32,0x00,0x36,0x00,0x32,0x00,0x37,0x00
  !db 0x32,0x00,0x38,0x00,0x32,0x00,0x39,0x00,0x32,0x00,0x41,0x00,0x32,0x00,0x42,0x00
  !db 0x32,0x00,0x43,0x00,0x32,0x00,0x44,0x00,0x32,0x00,0x45,0x00,0x32,0x00,0x46,0x00
  !db 0x33,0x00,0x30,0x00,0x33,0x00,0x31,0x00,0x33,0x00,0x32,0x00,0x33,0x00,0x33,0x00
  !db 0x33,0x00,0x34,0x00,0x33,0x00,0x35,0x00,0x33,0x00,0x36,0x00,0x33,0x00,0x37,0x00
  !db 0x33,0x00,0x38,0x00,0x33,0x00,0x39,0x00,0x33,0x00,0x41,0x00,0x33,0x00,0x42,0x00
  !db 0x33,0x00,0x43,0x00,0x33,0x00,0x44,0x00,0x33,0x00,0x45,0x00,0x33,0x00,0x46,0x00
  !db 0x34,0x00,0x30,0x00,0x34,0x00,0x31,0x00,0x34,0x00,0x32,0x00,0x34,0x00,0x33,0x00
  !db 0x34,0x00,0x34,0x00,0x34,0x00,0x35,0x00,0x34,0x00,0x36,0x00,0x34,0x00,0x37,0x00
  !db 0x34,0x00,0x38,0x00,0x34,0x00,0x39,0x00,0x34,0x00,0x41,0x00,0x34,0x00,0x42,0x00
  !db 0x34,0x00,0x43,0x00,0x34,0x00,0x44,0x00,0x34,0x00,0x45,0x00,0x34,0x00,0x46,0x00
  !db 0x35,0x00,0x30,0x00,0x35,0x00,0x31,0x00,0x35,0x00,0x32,0x00,0x35,0x00,0x33,0x00
  !db 0x35,0x00,0x34,0x00,0x35,0x00,0x35,0x00,0x35,0x00,0x36,0x00,0x35,0x00,0x37,0x00
  !db 0x35,0x00,0x38,0x00,0x35,0x00,0x39,0x00,0x35,0x00,0x41,0x00,0x35,0x00,0x42,0x00
  !db 0x35,0x00,0x43,0x00,0x35,0x00,0x44,0x00,0x35,0x00,0x45,0x00,0x35,0x00,0x46,0x00
  !db 0x36,0x00,0x30,0x00,0x36,0x00,0x31,0x00,0x36,0x00,0x32,0x00,0x36,0x00,0x33,0x00
  !db 0x36,0x00,0x34,0x00,0x36,0x00,0x35,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x37,0x00
  !db 0x36,0x00,0x38,0x00,0x36,0x00,0x39,0x00,0x36,0x00,0x41,0x00,0x36,0x00,0x42,0x00
  !db 0x36,0x00,0x43,0x00,0x36,0x00,0x44,0x00,0x36,0x00,0x45,0x00,0x36,0x00,0x46,0x00
  !db 0x37,0x00,0x30,0x00,0x37,0x00,0x31,0x00,0x37,0x00,0x32,0x00,0x37,0x00,0x33,0x00
  !db 0x37,0x00,0x34,0x00,0x37,0x00,0x35,0x00,0x37,0x00,0x36,0x00,0x37,0x00,0x37,0x00
  !db 0x37,0x00,0x38,0x00,0x37,0x00,0x39,0x00,0x37,0x00,0x41,0x00,0x37,0x00,0x42,0x00
  !db 0x37,0x00,0x43,0x00,0x37,0x00,0x44,0x00,0x37,0x00,0x45,0x00,0x37,0x00,0x46,0x00
  !db 0x38,0x00,0x30,0x00,0x38,0x00,0x31,0x00,0x38,0x00,0x32,0x00,0x38,0x00,0x33,0x00
  !db 0x38,0x00,0x34,0x00,0x38,0x00,0x35,0x00,0x38,0x00,0x36,0x00,0x38,0x00,0x37,0x00
  !db 0x38,0x00,0x38,0x00,0x38,0x00,0x39,0x00,0x38,0x00,0x41,0x00,0x38,0x00,0x42,0x00
  !db 0x38,0x00,0x43,0x00,0x38,0x00,0x44,0x00,0x38,0x00,0x45,0x00,0x38,0x00,0x46,0x00
  !db 0x39,0x00,0x30,0x00,0x39,0x00,0x31,0x00,0x39,0x00,0x32,0x00,0x39,0x00,0x33,0x00
  !db 0x39,0x00,0x34,0x00,0x39,0x00,0x35,0x00,0x39,0x00,0x36,0x00,0x39,0x00,0x37,0x00
  !db 0x39,0x00,0x38,0x00,0x39,0x00,0x39,0x00,0x39,0x00,0x41,0x00,0x39,0x00,0x42,0x00
  !db 0x39,0x00,0x43,0x00,0x39,0x00,0x44,0x00,0x39,0x00,0x45,0x00,0x39,0x00,0x46,0x00
  !db 0x41,0x00,0x30,0x00,0x41,0x00,0x31,0x00,0x41,0x00,0x32,0x00,0x41,0x00,0x33,0x00
  !db 0x41,0x00,0x34,0x00,0x41,0x00,0x35,0x00,0x41,0x00,0x36,0x00,0x41,0x00,0x37,0x00
  !db 0x41,0x00,0x38,0x00,0x41,0x00,0x39,0x00,0x41,0x00,0x41,0x00,0x41,0x00,0x42,0x00
  !db 0x41,0x00,0x43,0x00,0x41,0x00,0x44,0x00,0x41,0x00,0x45,0x00,0x41,0x00,0x46,0x00
  !db 0x42,0x00,0x30,0x00,0x42,0x00,0x31,0x00,0x42,0x00,0x32,0x00,0x42,0x00,0x33,0x00
  !db 0x42,0x00,0x34,0x00,0x42,0x00,0x35,0x00,0x42,0x00,0x36,0x00,0x42,0x00,0x37,0x00
  !db 0x42,0x00,0x38,0x00,0x42,0x00,0x39,0x00,0x42,0x00,0x41,0x00,0x42,0x00,0x42,0x00
  !db 0x42,0x00,0x43,0x00,0x42,0x00,0x44,0x00,0x42,0x00,0x45,0x00,0x42,0x00,0x46,0x00
  !db 0x43,0x00,0x30,0x00,0x43,0x00,0x31,0x00,0x43,0x00,0x32,0x00,0x43,0x00,0x33,0x00
  !db 0x43,0x00,0x34,0x00,0x43,0x00,0x35,0x00,0x43,0x00,0x36,0x00,0x43,0x00,0x37,0x00
  !db 0x43,0x00,0x38,0x00,0x43,0x00,0x39,0x00,0x43,0x00,0x41,0x00,0x43,0x00,0x42,0x00
  !db 0x43,0x00,0x43,0x00,0x43,0x00,0x44,0x00,0x43,0x00,0x45,0x00,0x43,0x00,0x46,0x00
  !db 0x44,0x00,0x30,0x00,0x44,0x00,0x31,0x00,0x44,0x00,0x32,0x00,0x44,0x00,0x33,0x00
  !db 0x44,0x00,0x34,0x00,0x44,0x00,0x35,0x00,0x44,0x00,0x36,0x00,0x44,0x00,0x37,0x00
  !db 0x44,0x00,0x38,0x00,0x44,0x00,0x39,0x00,0x44,0x00,0x41,0x00,0x44,0x00,0x42,0x00
  !db 0x44,0x00,0x43,0x00,0x44,0x00,0x44,0x00,0x44,0x00,0x45,0x00,0x44,0x00,0x46,0x00
  !db 0x45,0x00,0x30,0x00,0x45,0x00,0x31,0x00,0x45,0x00,0x32,0x00,0x45,0x00,0x33,0x00
  !db 0x45,0x00,0x34,0x00,0x45,0x00,0x35,0x00,0x45,0x00,0x36,0x00,0x45,0x00,0x37,0x00
  !db 0x45,0x00,0x38,0x00,0x45,0x00,0x39,0x00,0x45,0x00,0x41,0x00,0x45,0x00,0x42,0x00
  !db 0x45,0x00,0x43,0x00,0x45,0x00,0x44,0x00,0x45,0x00,0x45,0x00,0x45,0x00,0x46,0x00
  !db 0x46,0x00,0x30,0x00,0x46,0x00,0x31,0x00,0x46,0x00,0x32,0x00,0x46,0x00,0x33,0x00
  !db 0x46,0x00,0x34,0x00,0x46,0x00,0x35,0x00,0x46,0x00,0x36,0x00,0x46,0x00,0x37,0x00
  !db 0x46,0x00,0x38,0x00,0x46,0x00,0x39,0x00,0x46,0x00,0x41,0x00,0x46,0x00,0x42,0x00
  !db 0x46,0x00,0x43,0x00,0x46,0x00,0x44,0x00,0x46,0x00,0x45,0x00,0x46,0x00,0x46,0x00
EndProcedure
Global time.q
Global txt.s
CreateImage(0, 50, 50, 24, #White)
time = ElapsedMilliseconds()
txt = ImageHtml(0)
MessageRequester("Done",Str(ElapsedMilliseconds() - time) + "ms" )
;Debug txt
I also changed the formating slightly so the output looks nicer.