各位老大,帮帮忙,把简单的Vc代码转换成Delphi的。100分送给你............

chenxiaohan 2006-07-21 09:12:59


void CHKVisionDlg::OnCapimage()
{
// TODO: Add your control notification handler code here
UCHAR imageBuf[704 * 576*2];
DWORD Size = 704 * 576*2;
UCHAR *imageBuffer=new UCHAR[Size];
char fileName[256];
CTime m_StartTime1=CTime::GetCurrentTime();
CString csStartTime=m_StartTime1.Format("%Y%m%d%H%M%S");
int ret;
int jpegQuality=100;

{
//capture BMP picture
TRACE("start original image cap\n");
sprintf(fileName, "ch%02d_%s.bmp", iLastSelect,csStartTime);
GetOriginalImage(ChannelHandle[iLastSelect], imageBuf, &Size);
if(Size == 704 *576 * 2)
SaveYUVToBmpFile(fileName, imageBuf, 704, 576);
else if(Size == 704 * 480* 2)
SaveYUVToBmpFile(fileName, imageBuf, 704, 480);
if(Size == 352 *288 * 2)
SaveYUVToBmpFile(fileName, imageBuf, 352, 288);
else if(Size == 352 * 240* 2)
SaveYUVToBmpFile(fileName, imageBuf, 352, 240);
if(Size == 176 *144 * 2)
SaveYUVToBmpFile(fileName, imageBuf, 176, 144);
else if(Size == 176 * 120* 2)
SaveYUVToBmpFile(fileName, imageBuf, 176, 120);

//capture jpg picture
if(!imageBuffer)
return;
Size = 704 * 576*2;
int ret=GetJpegImage(ChannelHandle[iLastSelect],imageBuffer,&Size,jpegQuality);
if(ret==0)
{
CString str;
str.Format("ch%02d_%s.jpg",iLastSelect,csStartTime);
FILE *pFile=fopen(str.GetBuffer(0),"wb");
if(pFile)
{
fwrite(imageBuffer,Size,1,pFile);
fclose(pFile);
}
else
AfxMessageBox("Can not open JPEG file!");
}
else if(ret==ERR_OUTOF_MEMORY)
AfxMessageBox("Not enough memory to store bitstream! \n or \n Image is too complex!");
else if(ret==ERR_WAIT_TIMEOUT)
AfxMessageBox("System is too busy!");
delete []imageBuffer;
Sleep(10);
}


}
...全文
509 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenxiaohan 2006-07-21
  • 打赏
  • 举报
回复
把这段翻译出来就ok了。。。

UCHAR imageBuf[704 * 576*2];
DWORD Size = 704 * 576*2;
THandle THandle0;
GetOriginalImage(THandle0, imageBuf, &Size);
//GetOriginalImage 返回Imagebuf和Size,以下为VC的声明

int GetOriginalImage(HANDEL hChannelHandle, UCHAR *ImageBuf, ULONG *Size);
chenxiaohan 2006-07-21
  • 打赏
  • 举报
回复
UCHAR imageBuf[704 * 576*2];
DWORD Size = 704 * 576*2;
THandle THandle0;
GetOriginalImage(THandle0, imageBuf, &Size);
//GetOriginalImage 返回Imagebuf和Size,以下为VC的声明

int GetOriginalImage(HANDEL hChannelHandle, UCHAR *ImageBuf, ULONG *Size);
chenxiaohan 2006-07-21
  • 打赏
  • 举报
回复
谢了, 翻译一部分,我就可以调试了。。。我先试。。
lonoaer 2006-07-21
  • 打赏
  • 举报
回复
老大 你这个函数本身有问题吧,我只做了一部分

procedure OnCapimage();
const
SIZE = 704*576*2;
type
imageBuf = Array [0..SIZE-1] of Byte;
var
pImageBuffer: ^imageBuf;
m_StartTime1: TDateTime;
fileName, stmp: string;
csStartTime: String;
ret: Integer;
jpegQuality: Integer;
begin
m_StartTime1 := Now;
csStartTime := FormatDateTime('YYYYmmDDHHMMSS', m_StartTime1);
jpegQuality := 100;

stmp := IntToStr(iLastSelect);

if Length(stmp) < 1 then stmp := '0'+stmp;

filename := format('ch%s_%s.bmp', [stmp, csStartTime]);
GetOriginalImage(ChannelHandle[iLastSelect], imageBuf, @Size);

if (Size = 704 *576 * 2) then SaveYUVToBmpFile(fileName, imageBuf, 704, 576);
else if (Size = 704 * 480* 2) then SaveYUVToBmpFile(fileName, imageBuf, 704, 480);

if (Size = 352 *288 * 2) then SaveYUVToBmpFile(fileName, imageBuf, 352, 288);
else if(Size = 352 * 240* 2) then SaveYUVToBmpFile(fileName, imageBuf, 352, 240);

if (Size = 176 *144 * 2) then SaveYUVToBmpFile(fileName, imageBuf, 176, 144);
else if (Size = 176 * 120* 2) then SaveYUVToBmpFile(fileName, imageBuf, 176, 120);

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧