从CCD中读取的数据存在缓冲区中,怎么样能快速的将其存为JPEG格式的文件

解决方案 »

  1.   

    呵,既然能读取的话,相信将流存为文件是简单的
    因为对于流都有通用的savetofile方法
      

  2.   

    aStream:=TMemoryStream.Create;                
       aStream.WriteBuffer(m_pImageBuffer[BufferIndex]^,(1024*768*3));
       aJpeg:=TJpegImage.Create;
       aJpeg.LoadFromStream(aStream);
       aJpeg.CompressionQuality := 10;
       aJpeg.Compress;   aJpeg.SaveToFile(DestName); 我这段程序有问题吗?
    运行中不报错,但存的JPG文件0字节
      

  3.   

    对程序修改了一下,但所存的BMP文件还是0字节
       aStream:=TMemoryStream.Create;
       aStream.WriteBuffer(bfh,sizeof(BITMAPFILEHEADER));
       aStream.WriteBuffer(m_pBitmapInfo^,sizeof(BITMAPINFOHEADER));
       aStream.WriteBuffer(m_pImageBuffer[BufferIndex]^,dwImageSize);   aBitmap:=TBitmap.Create;
       aBitmap.LoadFromStream(aStream);
       aBitmap.SaveToFile(DestName);   
    但如果这样存就没有问题了
      hFile:=FileCreate(DestName);   if not (hFile = INVALID_HANDLE_VALUE) then
         begin
           FileWrite(hFile,bfh,sizeof(BITMAPFILEHEADER));
           FileWrite(hFile,m_pBitmapInfo^,sizeof(BITMAPINFOHEADER));
           FileWrite(hFile,m_pImageBuffer[BufferIndex]^,dwImageSize);
         end;   FileClose(hFile);
    为什么?????  
      

  4.   

    如果从BMP文件读入aStream,再由aStream读入aBitmap则也没有问题,并且这种情况下aStream的大小与直接从上面直接从内存读入是一样的,都是14+40+1024*768*3=2359350
       aStream:=TMemoryStream.Create;
       aStream.LoadFromFile(DestName);   showmessage('Stream Size='+inttostr(aStream.Size));   aBitmap:=TBitmap.Create;
       aBitmap.LoadFromStream(aStream);
       aBitmap.SaveToFile('0m.bmp');
      

  5.   

    遇到了相同的问题,
    同来学习了,
    摄像头返回的是一个jpg图像在内存中的地址,到现在都不知道该怎么读出来