Boolean: ReLoad

Русскоязычное сообщество создателей игр.
Текущее время: 27-10, 01:18

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: Скачка и загузка картинки
СообщениеДобавлено: 11-02, 00:05 
Не в сети

Зарегистрирован: 08-02, 22:08
Сообщения: 8
Код:
Graphics 640,480,32,2
SetBuffer BackBuffer()

Image = LoadBMPImage("http://mariusrabung.ma.funpic.de/Temp/TestImage.bmp")

DrawImage Image,0,0
Flip
WaitKey
EndGraphics
End


Function LoadBMPImage(Url$)

Local bfType%
Local bfSize%
Local bfReserved%
Local bfOffBits%

Local biSize%
Local biWidth%
Local biHeight%
Local biPlanes%
Local biBitCount%
Local biCompression%
Local biSizeImage%
Local biXPelsPerMeter%
Local biYPelsPerMeter%
Local biClrUsed%
Local biClrImportant%

Local biMaskRed%
Local biMaskGreen%
Local biMaskBlue%

Local biDown%

Local ClrTable%[256]


Local host$, host_tmp

 host$=right(Url$,len(Url$)-7)             ; http:// rausschneiden
 host_tmp=instr(host$,"/")-1               ; Das erste Slash im String suchen und 1 abziehen
 host$=left(host$,host_tmp)                ; Den Text bis zu dem ersten Slash-1 k?rzen

Local stream=opentcpstream(host$,80)

WriteLine stream, "GET "+url$
WriteLine stream, "Host: "+host$
WriteLine stream, ""

;----------------------- Bitmap Header
bfType%          = ReadShort(stream)
bfSize%          = ReadInt(stream)
bfReserved%      = ReadInt(stream)
bfOffBits%       = ReadInt(stream)
;-----------------------
If bfType% <> 19778 Then RuntimeError("Error: File ist not a valid Windows Bitmap(.bmp)")
;----------------------- Bitmap InfoHeader
biSize%          = ReadInt(stream)
biWidth%         = ReadInt(stream)
biHeight%        = ReadInt(stream)
biPlanes%        = ReadShort(stream)
biBitCount%      = ReadShort(stream)
biCompression%   = ReadInt(stream)
biSizeImage%     = ReadInt(stream)
biXPelsPerMeter% = ReadInt(stream)
biYPelsPerMeter% = ReadInt(stream)
biClrUsed%       = ReadInt(stream)
biClrImportant%  = ReadInt(stream)

If biHeight%>0 Then biDown%=0
If biHeight%<0 Then biDown%=1
;---------------------- evt. Farbmasken
If biCompression%=3 Then
 biMaskBlue%     = ReadInt(stream)
 biMaskGreen%    = ReadInt(stream)
 biMaskBlue%     = ReadInt(stream)
EndIf
;---------------------- FarbTabellen
If biClrUsed%=0 Then
 If biBitCount%=1 Or biBitCount%=4 Or biBitCount%=8 Then
   For tmp=0 To 2^biBitCount%
     ClrTable[tmp] = ReadInt(stream);Byte(stream)+ReadByte(stream)+ReadByte(stream)+ReadByte(stream)
   Next   
 EndIf
EndIf
;---------------------- BildDaten
Local img=CreateImage( biWidth%,biHeight% )
SetBuffer ImageBuffer(img)

;Print clrtable[0]
;Print clrtable[1]
;Print clrtable[2]
;Print ReadByte(stream)
;Print ReadByte(stream)
;Print ReadByte(stream)
;Print ReadByte(stream)
;Print ReadByte(stream)
;Print ReadByte(stream)
;Print ReadByte(stream)
;Print ReadByte(stream)
;Print ReadByte(stream)

;Print biCompression%
;Print biBitCount%
;Print biDown%
;Print biHeight%
;Print biclrUsed%
;Print biclrimportant%

If biCompression%=0 Then  ; BI-RGB
 If biBitCount% = 1 Then
   If biDown% = 0 Then
    For tmp2=biHeight% To 0 Step -1
    For tmp=0 To biWidth% ;Step -1
     pixel=readbyte(stream)
     LockBuffer ImageBuffer(img)
      If pixel<>0 Then WritePixelFast tmp,tmp2,$FFFFFF
      If pixel=0   Then WritePixelFast tmp,tmp2,$000000 
     UnlockBuffer ImageBuffer(img)
     
    Next
   Next
  ElseIf biDown%=1 Then
   For tmp2=0 To biHeight%
    For tmp=0 To biWidth%
     pixel=readbyte(stream)
     LockBuffer ImageBuffer(img)
      If pixel<>0 Then WritePixelFast tmp,tmp2,$FFFFFF
      If pixel=0   Then WritePixelFast tmp,tmp2,$000000
     UnlockBuffer ImageBuffer(img)   
    Next
   Next
  EndIf
 ElseIf biBitCount% = 4
 
 ElseIf biBitCount% = 8
 
 ElseIf biBitCount% = 16
 
 ElseIf biBitCount% = 24 Then
  If biDown% = 0 Then
   For tmp2=biHeight% To 0 Step -1
    For tmp=0 To biWidth%
     blue=ReadByte(stream)
     green=ReadByte(stream)
     red=Readbyte(stream)
    ;Color red,green,blue
     LockBuffer ImageBuffer(img)
      rgb=255*$1000000 + red*$10000 + green*$100 + blue
      WritePixelFast tmp,tmp2,rgb
     UnlockBuffer ImageBuffer(img)
     ;Plot tmp,tmp2
    Next
   Next
  ElseIf biDown%=1 Then
   For tmp2=0 To biHeight%
    For tmp=0 To biWidth%
     blue=ReadByte(stream)
     green=ReadByte(stream)
     red=Readbyte(stream)
     ;Color red,green,blue
      LockBuffer ImageBuffer(img)
      rgb=255*$1000000 + red*$10000 + green*$100 + blue
      WritePixelFast tmp,tmp2,rgb
      UnlockBuffer ImageBuffer(img)   
     ;Plot tmp,tmp2
    Next
   Next
  EndIf
 ElseIf BiBitCount% = 32
 
 Endif 
ElseIf biCompression%=1 ; BI-RLE8

ElseIf biCompression%=2 ; BI-RLE4

ElseIf biCompression%=3 ; BI-BITFIELD

EndIf


SetBuffer BackBuffer()

CloseTCPStream stream
Return img
End Function


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
cron
Powered by Forumenko © 2006–2014
Русская поддержка phpBB