⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 image.cpp

📁 本软件使用Visual Studio 2005创建
💻 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 + -