📄 image.cpp
字号:
/*
***************************************************************
* Filename : image,cpp
* Program :
* Copyright : Copyright (C) 2006, TLOL
* Author : Isaac <isaac.tlol@gmail.com>
* Description :
* Created at : 200600404.3:05
* Based on :
* Modified by :
* Modified at :
***************************************************************
*/
#include "stdafx.h"
#include <winsock2.h>
#include <stdio.h>
#include <string.h>
#include "JpgImage.h"
#include "..\\GetVideo.h"
#pragma comment(lib,"ws2_32.lib")
unsigned char hFile[30000];
int plen;
void GetData();
unsigned long ShowVideo()
{
CJpgImage *jpg;
CBitmap bitmap;
jpg = new CJpgImage;
while(1)
{
GetData();
jpg->LoadJpg(hFile,plen);
/*试验
CFile file;
if(!file.Open("E:\\aaa.jpg",CFile::modeRead))
return 101;
int size = file.GetLength();
if(size==0)
return 102;
char * p = new char[size];
if(p==NULL) return 100;
file.Read(p,size);
file.Close();
int rv = jpg->LoadJpg(p,size);
delete []p;
//试验
*/
// CString s;
// jpg->LoadJpg("E:\\aaa.jpg");
jpg->GetCBitmap(bitmap);
HDC pdc=GetDC(*theApp.GetMainWnd());
jpg->StretchDIBits(pdc,0,0,320,240,0,0,320,240,DIB_RGB_COLORS,SRCCOPY);
}
return 0;
}
void SetSockAddr(SOCKADDR*addr,char*ip,short port)
{
SOCKADDR_IN*ad=(SOCKADDR_IN*)addr;
ad->sin_family=AF_INET;
ad->sin_addr.S_un.S_addr=inet_addr(ip);
ad->sin_port=htons(port);
}
int COPY(unsigned char*dest,unsigned char*src,int num)
{
int i=0;
for(i=0;i<num;i++)*dest=*src;
return i;
}
int WriteJPEG (LPTSTR lpszName, PBYTE pData, int nSize)
{
BYTE MJPGDHTSeg[0x1A4] = {
/* JPEG DHT Segment for YCrCb omitted from MJPG data */
0xFF,0xC4,0x01,0xA2,
0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x01,0x00,0x03,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
0x08,0x09,0x0A,0x0B,0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,
0x00,0x01,0x7D,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,
0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xA1,0x08,0x23,0x42,0xB1,0xC1,0x15,0x52,0xD1,0xF0,0x24,
0x33,0x62,0x72,0x82,0x09,0x0A,0x16,0x17,0x18,0x19,0x1A,0x25,0x26,0x27,0x28,0x29,0x2A,0x34,
0x35,0x36,0x37,0x38,0x39,0x3A,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x53,0x54,0x55,0x56,
0x57,0x58,0x59,0x5A,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x73,0x74,0x75,0x76,0x77,0x78,
0x79,0x7A,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,
0x9A,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,
0xBA,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,
0xDA,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,
0xF8,0xF9,0xFA,0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,
0x02,0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,
0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,0xA1,0xB1,0xC1,0x09,0x23,0x33,0x52,0xF0,0x15,0x62,
0x72,0xD1,0x0A,0x16,0x24,0x34,0xE1,0x25,0xF1,0x17,0x18,0x19,0x1A,0x26,0x27,0x28,0x29,0x2A,
0x35,0x36,0x37,0x38,0x39,0x3A,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x53,0x54,0x55,0x56,
0x57,0x58,0x59,0x5A,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x73,0x74,0x75,0x76,0x77,0x78,
0x79,0x7A,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x92,0x93,0x94,0x95,0x96,0x97,0x98,
0x99,0x9A,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,
0xB9,0xBA,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,
0xD9,0xDA,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,
0xF9,0xFA
};
int rc = 0;
DWORD dwBytes;
unsigned char *pFile=hFile;
// HANDLE hFile = CreateFile (lpszName, GENERIC_WRITE | GENERIC_READ, 0, NULL, CREATE_ALWAYS, 0, NULL);
// if (hFile != INVALID_HANDLE_VALUE)
// {
BYTE bHdr[] =
{
0xff,0xd8, // SOI
0xff,0xe0, // APP0
0x00,0x10, // APP0 Hdr size
0x4a,0x46,0x49,0x46,0x00, // ID string
0x01,0x01, // Version
0x00, // Bits per type
0x00, 0x00, // X density
0x00, 0x00, // Y density
0x00, // X Thumbnail size
0x00, // Y Thumbnail size
};
// WriteFile (hFile, bHdr, sizeof (bHdr), &dwBytes, NULL);
pFile+=COPY(pFile,bHdr, sizeof (bHdr));
// Write DHT color segment needed for stand-alone file
// WriteFile (hFile, MJPGDHTSeg, sizeof (MJPGDHTSeg), &dwBytes, NULL);
pFile+=COPY(pFile,MJPGDHTSeg,sizeof (MJPGDHTSeg));
// try removing AVI header from image
int n = *(pData+4);
n = n << 8;
n += *(pData+5)+4;
PBYTE p2 = pData + n;
// WriteFile (hFile, p2, nSize-n, &dwBytes, NULL);
pFile+=COPY(pFile,p2, nSize-n);
// CloseHandle (hFile);
// } else
// rc = GetLastError();
plen=pFile-hFile;
return rc;
}
void GetData()
{
unsigned char temp[20001],*p;
int len,ret;
WSADATA DATA;
SOCKET skt;
SOCKADDR laddr,raddr;
if(WSAStartup(0x0202,&DATA)!=0)
{
MessageBox(NULL,"init ERROR!","",0);
exit(1);
}
skt=socket(AF_INET,SOCK_DGRAM,IPPROTO_IP);
gethostname((char*)temp,100);
p=(unsigned char*)inet_ntoa(*(struct in_addr*)gethostbyname((char*)temp)->h_addr_list[0]);
SetSockAddr(&laddr,(char*)p,7128);
SetSockAddr(&raddr,"192.168.0.22",7128);
if(bind(skt,&laddr,sizeof(laddr))!=0)
MessageBox(NULL,"Bind error","",0);
len=sizeof(raddr);
ret=recvfrom(skt,(char*)temp,20000,0,&raddr,&len);
if(ret==SOCKET_ERROR)
{
ret=WSAGetLastError();
MessageBox(NULL,itoa(ret,(char*)temp,10),"",0);
exit(0);
}
WriteJPEG ("E:\\aaa.jpg",temp+8,ret-12);
MessageBox(NULL,"finished","",0);
closesocket(skt);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -