|
Полезные функции Выкладываем полезные функции, чтоб не изобретать велосипед заново... |
27.07.2006, 18:36
|
#1
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Скачка и загузка картинки
Картинка скачивается в память и на основе полученной информации создаётся image-объект Blitz-а. Без всяких свопов на винт (виндовые в расчёт не берём).
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()
Return img
CloseTCPStream stream
End Function
Код взят от сюда:
http://www.freecoder.chat-blitz.de/
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
27.07.2006, 18:49
|
#2
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Re: Скачка и загузка картинки
Подозреваю, что всё-таки имелось в виду:
CloseTCPStream stream
Return img
End Function
задал вопрос автору. жду ответа =)
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
27.07.2006, 21:17
|
#3
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Re: Скачка и загузка картинки
Я оказался прав )
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:33.
|