图像保存数据丢失的问题

guanbenben 2007-12-04 04:42:15
我先将一副图像的图形部分显示出来,接着将图像的字符部分叠加显示到上面,这时保存为JPEG格式,但为什么没有后来的字符部分呢
...全文
106 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
guanbenben 2007-12-05
  • 打赏
  • 举报
回复
多谢楼上的,结帐
lhappyrain 2007-12-05
  • 打赏
  • 举报
回复
画点是没有保存数据吧,我给你改了一下,试试看

	for( i = 0,x=x1,j=k; i < 96;  i++ )
{
for( kk=0; kk<8; kk++,x++,j=j+3)
{
if ((*(ptmp1+i)) & 0x80)
{
/*b=0xff;
r=b;
g=b;*/
r = *(m_pImageData+j) = 0xff;
g = *(m_pImageData+j+1) = 0xff;
b = *(m_pImageData+j+2) = 0xff;
dc.SetPixel(x, y, RGB(r,g,b));
}

*(ptmp1+i) <<= 1;
}
}
guanbenben 2007-12-05
  • 打赏
  • 举报
回复
up
guanbenben 2007-12-05
  • 打赏
  • 举报
回复
将图像的字符部分显示的屏幕上代码如下:
void CImageView::OnUpdateImage1(WPARAM wParam, LPARAM lParam)
{
int idx = (int)wParam;

CString s;
int i = 0, j = 0, x = 0;
int x1 = m_rcImage.left;
int x2 = m_rcImage.right+256;
int y = m_rcImage.top + idx;
int height = m_rcImage.Height()-1;
int k = (height-idx)*m_dwImageWidth*3;
CClientDC dc(this);
BYTE r, g, b=0;
int kk;

BYTE* pData1 = (BYTE*)lParam;
CopyMemory(ptmp1, pData1, 96);
/*unsigned char *p=ptmp1;
if(*p==0)
MessageBox("error");*/
//CopyMemory(ptmp1, pData1, 64);

for( i = 0,x=x1; i < 96; i++ )
{
for( kk=0; kk<8; kk++,x++)
{
if ((*(ptmp1+i)) & 0x80)
{
b=0xff;
r=b;
g=b;
dc.SetPixel(x, y, RGB(r,g,b));
}

*(ptmp1+i) <<= 1;
}
}

// Add lines11
idx++;

OnButtonImageStop();

EnableOption(TRUE);

m_strImagePrint = m_strImagePath + _T("\\strPrint.jpg");
DeleteFile(m_strImagePrint);
JpegFile::VertFlipBuf(m_pImageData, m_dwImageWidth*3, m_dwImageHeight+m_dwImageRemark);
BOOL ret = JpegFile::RGBToJpegFile(m_strImagePrint, m_pImageData, m_dwImageWidth, m_dwImageHeight+m_dwImageRemark, TRUE, 75);
JpegFile::VertFlipBuf(m_pImageData, m_dwImageWidth*3, m_dwImageHeight+m_dwImageRemark);
}

将图像保存的函数:


void CImageView::OnButtonImageSave()
{
const TCHAR szFilters[]= _T("Jpg Files (*.jpg)|*.jpg||");
CFileDialog dlg (FALSE,NULL,NULL,OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_NOCHANGEDIR,szFilters,this);

/*
TCHAR sz[255] = {0};
GetCurrentDirectory(255, sz);
dlg.m_ofn.lpstrInitialDir = sz;
*/

dlg.m_ofn.lpstrInitialDir = m_strImagePath;

if( dlg.DoModal() == IDOK )
{
CString strFile, s, str;
str = dlg.GetFileName();
strFile = dlg.GetPathName();
strFile = strFile + _T(".jpg");

switch( m_iType )
{
case 0: // Original image
{
JpegFile::VertFlipBuf(m_pImageData, (m_dwImageWidth)*3 ,m_dwImageHeight+m_dwImageRemark);
BOOL ret = JpegFile::RGBToJpegFile(strFile, m_pImageData, m_dwImageWidth, m_dwImageHeight+m_dwImageRemark, TRUE, 75);
s.Format("Save image file %s succeeded!", str);
if( ret ) m_lblImage_Message.SetWindowText(s);
JpegFile::VertFlipBuf(m_pImageData, (m_dwImageWidth)*3, m_dwImageHeight+m_dwImageRemark);
}
break;
case 1: // Remove remark
{
JpegFile::VertFlipBuf(m_pDelRemarkData, m_dwImageWidth*3, m_dwImageHeight);
BOOL ret = JpegFile::RGBToJpegFile(strFile, m_pDelRemarkData, m_dwImageWidth, m_dwImageHeight, TRUE, 75);
s.Format("Save image file %s succeeded!", str);
if( ret ) m_lblImage_Message.SetWindowText(s);
JpegFile::VertFlipBuf(m_pDelRemarkData, m_dwImageWidth*3, m_dwImageHeight);
}
break;
case 2: // Remove character
{
JpegFile::VertFlipBuf(m_pDelCharData, m_dwImageWidth*3, m_dwImageHeight+m_dwImageRemark);
BOOL ret = JpegFile::RGBToJpegFile(strFile, m_pDelCharData, m_dwImageWidth, m_dwImageHeight+m_dwImageRemark, TRUE, 75);
s.Format("Save image file %s succeeded!", str);
if( ret ) m_lblImage_Message.SetWindowText(s);
JpegFile::VertFlipBuf(m_pDelCharData, m_dwImageWidth*3, m_dwImageHeight+m_dwImageRemark);
}
break;
case 3: // Image part
{
JpegFile::VertFlipBuf(m_pImagePartData, m_ImagePart_w*3, m_ImagePart_h);
BOOL ret = JpegFile::RGBToJpegFile(strFile, m_pImagePartData, m_ImagePart_w, m_ImagePart_h, TRUE, 75);
s.Format("Save image file %s succeeded!", str);
if( ret ) m_lblImage_Message.SetWindowText(s);
JpegFile::VertFlipBuf(m_pImagePartData, m_ImagePart_w*3, m_ImagePart_h);
}
break;
}
}
}

但是在保存成功的图片上没有字符部分,这是什么原因啊,在线结帐!!!
buggycode 2007-12-05
  • 打赏
  • 举报
回复
你是用什么来保存的,和显示有什么关系?
guanbenben 2007-12-04
  • 打赏
  • 举报
回复
up

19,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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