| Boolean: ReLoad https://boolean.forumenko.com/ |
|
| Скачка и загузка картинки https://boolean.forumenko.com/topic12.html |
Страница 1 из 1 |
| Автор: | impersonalis [ 11-02, 00:05 ] |
| Заголовок сообщения: | Скачка и загузка картинки |
Код: 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 из 1 | Часовой пояс: UTC + 3 часа |
| Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |
|