问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

求mfc图像处理中从外部载入jpeg图片的代码

发布网友 发布时间:2022-04-24 15:20

我来回答

3个回答

热心网友 时间:2022-04-24 16:49

在默认情况下,静态文本在生成Flash时就会把文本相应的矢量信息也保存到swf中,这种做法可以避免作品拿到别的机器上时因缺乏字体而无法正常显示文本的问题.而动态文本则不会作这样的处理,因为文本内容是变化的,如果像静态文本那样,就要把所有文字的矢量信息都生成到Flash中,导致文件变得很大.因此,默认情况下,在动态文本要显示字符的时候,Flash播放器会实时从系统里调用字体来显示,这样显示的字体叫设备字体.
设备字体调用到Flash以后,只剩下一些点阵信息,不存在矢量信息(这也是文本出现锯齿的原因).所以,它不能像图形那样进行几何运算,不能得出旋转后矢量到底是什么形状.

至于为什么不能透明,笔者认为,透明的显示还要计算透明层与下面层的颜色叠加.至于在哪个位置叠加,也是需要矢量信息的支持的.

然后,遮罩也是一种特效,它是需要遮罩层与被遮罩层的轮廓叠加才能算出图形的形状,所以设备字体显示的动态文本也是不行的.
问:如何解决这个问题呢?
答:很简单的一个办法.选中动态文本以后,在属性面板里点"字符"按钮,选择"所有字符"就可以了.因为这样实际上是嵌入了字体的矢量信息,所以就可以进行特效的处理了.

问:上面的问题是解决了,可是这样生成的文件很大(几M到十几M),何解?
答:上面说了,嵌入字体实际上是嵌入了字体的矢量信息.如果你嵌入了所有字符,实际上你把整个字体文件都放到swf文件里头.
假设你用的是宋体,你可以进行如下操作:
打开系统的控制面板,并双击"字体"进入

找到"宋体"后,看看文件的大小,你的swf也就会因此而增加(笔者的机这个文件为10M大,所以,嵌入字体轮廓后,swf就会大10M多.

问:这么大的Flash放到网上很不实际,想把它变小该如何处理?
答:这需要具体问题具体分析.
问:我的动态文本显示的肯定是数字,该如何操作?
答:"字符"选项那里按下图选择就可以了.这样swf文件只多了10个数字的矢量信息,文件不会大很多.

问:现在我要做一个导航菜单,里头用动态文本设置标签,而且动态文本需要使用特效的,该怎么做呢?
答:作为导航菜单,你的栏目一般都比较固定,所以,你的菜单项里用过哪些字就嵌哪些字的轮廓就可以了.(见下图)

这样,下次要更新栏目的时候,打开源文件,改文本值的同时,也相应地改变嵌入的字体轮廓.
问:但是更多的时候,要载入文本,而且内容根本就不知道.就好像这个:

我载入的歌词内容真的不知道,而且也不排除有英文,日文等,而且我又需要遮罩的效果,这该怎么做才能既有效果,又不会使文件变大呢?
答:虽然不能用遮罩,但是遮盖还是可以的,在本歌词播放器中,真正越出遮罩的部分只有以下红色标记的区域.

所以,在红色标记区域画两块跟背景色一样的矩形,盖住动态文本就可以了.
问:如果背景复杂些,不是单一颜色,而且可能有多个图层,那处理起来不就很麻烦?万一背景改了,或者要移动动态文本,那改起来岂不是很难?这问题可以解决吗?
答:遇到这种情况,建议把背景部分转换为一个元件,然后背景层上面放文本,文本上再放一层,内容跟背景层一样,背景层上面再放一层,用于遮罩一个背景层.其形状就是红色区域的形状(最终效果如下图)

如果要改背景的话,就直接修改背景元件,要移动文本的话,就把文本和遮罩一起移动,操作比较方便.
问:跟上面一样,也需要所有字符都能显示,但是要做透明效果,又该如何呢?
答:假设现在要用动态文本做这么个效果.

那是不是非要嵌入字体轮廓才能实现呢?
答案是否定的.
这个效果笔者用Flash做的,可能大家会想到这是用Alpha补间实现的.其实笔者是用了色调补间来做的,第一帧色调白色,最后一帧色调"无",文本本身红色.
这说明了,在背景为纯色的情况下,可以用色调来代替Alpha,而色调虽然是特效,但是它实际上只是颜色的复合,结果让文本显示单一颜色,调用
设备字体就可以显示出来.所以,在这种情况下,可以用色调效果来取代透明效果,以避免字体轮廓的嵌入.
但是如果背景本身是复杂的图片,或者是渐变色,多个色块组成的话,就非得要用透明度了.如果要避免字体轮廓的嵌入,建议采用一些替代效果,笔者会在后面给大家介绍替代效果的一些参考方案.
http://www2.flash8.net/teach/4642.htm

热心网友 时间:2022-04-24 18:07

一看就知道是复制的
如果想在symbian中使用jpg或者png图片,则需要用到symbian提供的那个Multimedia ICL库里的类了。其中比较重的是CImageDecoder类,提供了对图像进行解码的功能。

来看看如何使用它的吧。先定义两个字串:

_LIT(KJPEGFile,"C:\\Data\\me.jpg");
_LIT(KJPEGType,"image/jpeg");

使用的代码比较简单,如下所示:

iDec = CImageDecoder::FileNewL(iRFs,KJPEGFile);

iParent->iBkImageMask=new (ELeave) CFbsBitmap();
iParent->iBkImageMask->Create( iDec-> FrameInfo().iOverallSizeInPixels,iDec-> FrameInfo().iFrameDisplayMode );
iDec->Convert( &iStatus, *(iParent->iBkImageMask) );
其中的iDec是CImageDecoder的实例,而iRFs是RFs的实例。而iParent->iBkImageMask则是一个CFbsBitmap对象实例。

也就是说,我们先利用CImageDecorder::FileNewL来打开一个图像文件(它会自已判断图像类型,我们也可以提供给它我们指定的图像类型)。然后这个图像的信息就保存在iDec->FrameInfo()中了,利用这个信息可以创建一个CFbsBitmap实例(因为symbian中所有显示的图像都是这种类型)。最后,调用CImageDecorder的异步函数Convert就可以将图像(jpeg 或者png格式的)转换成CFbsBitmap位图了。唯一的麻烦是Convert是一个异步函数,第一个参数是TRequestStatus类型(可以是一个活动对象的iStatus成员)。

除了CImageDecorder::FileNewL以外还有一个CImageDecorder:;DataNewL也可以用来从一个缓冲区的字节内容构造出图像数据,只是它第二个参数是TDesC8&类型的aSourceData。

[补充]

别忘了包括头文件 ImageConversion.h,还有引入库imageconversion.lib。

热心网友 时间:2022-04-24 19:42

CShowJpegView是我的的一个视图类,用的时候一定要将这个将成你自己的类哦!不是视图类也行,只要你能够传个CDC给这个函数就行。

/*

函数功能:显示JPG和GIF图片

参数说明 pDC:设备环境对象 strPath:要显示的图片路径

x:要显示的X位置 y:要显示的Y位置

*/

BOOL CShowJpegView::ShowJpgGif(CDC* pDC,CString strPath, int x, int y)

{

IStream *pStm;

CFileStatus fstatus;

CFile file;

LONG cb;

//打开文件并检测文件的有效性

if (file.Open(strPath,CFile::modeRead)&&

file.GetStatus(strPath,fstatus)&&

((cb = fstatus.m_size) != -1))

{

HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, cb);

LPVOID pvData = NULL;

if (hGlobal != NULL)

{

pvData = GlobalLock(hGlobal);

if (pvData != NULL)

{

file.ReadHuge(pvData, cb);

GlobalUnlock(hGlobal);

CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);

}

}

}

else

{

return false;

} //打开文件结束

//显示JPEG和GIF格式的图片,GIF只能显示一帧,还不能显示动画,

//要显示动画GIF请使用ACTIVE控//件。

IPicture *pPic;

//load image from file stream

if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*)&pPic)))

{

OLE_XSIZE_HIMETRIC hmWidth;

OLE_YSIZE_HIMETRIC hmHeight;

pPic->get_Width(&hmWidth);

pPic->get_Height(&hmHeight);

double fX,fY;

//get image height and width

fX = (double)pDC->GetDeviceCaps(HORZRES)*(double)hmWidth/

((double)pDC->GetDeviceCaps(HORZSIZE)*100.0);

fY = (double)pDC->GetDeviceCaps(VERTRES)*(double)hmHeight/

((double)pDC->GetDeviceCaps(VERTSIZE)*100.0);

//use render function display image

if(FAILED(pPic->Render(*pDC,x,y,(DWORD)fX,(DWORD)fY,0,

hmHeight,hmWidth,-hmHeight,NULL)))

{

pPic->Release();

return false;

}

pPic->Release();

}

else

{

return false;

}

return true;

}

下面这三行代码是调用时函数的方法:

CString sPath;

sPath=_T("C:\\WINDOWS\\SYSTEM\\OOBE\\IMAGES\\BGMC.JPG");

ShowJpgGif(pDC,sPath,100,100);

如果你显示的是在一个控件在,请用如下方式获得CDC

//将pStatic指向要显示的地方

CDC* pDC = GetDlgItem(IDC_CONTROL)->GetDC();

以上是显示JPG和GIF图片的一个简单的方法,简单的同时也存在着不足。放大缩小功能和显示动画GIF文件没实现。
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
蛋糕在冰箱可以放多久 最正宗的普洱茶泡法是怎样泡的 泡茶方法和步骤 怎么区分英语中宾语的补语和状语? 句子是什么从句(英语)请个个举例。定状时表名词性等, 最主要的就是怎么... 如何分辨英语的定语从句呢? 如何分辨是什么从句 为什么1156平台像非主流? TCL电视机不能开机怎么办? 29寸TCL彩电开机刚亮又自动关机 求小说,好看的小说,最好是完本,古风,发邮箱339607876@qq.com,不胜感激哦。最好是新出的,网评比较高的 已过期的图片怎么恢复 求好听的古风剧情歌,邮箱1446905867@qq.com 求古风超拽的qq签名 请大师帮忙测名字打分,急,谢谢! 思想家老子为什么被称为“老子” 老子又被称之为什么经? 老子在道教中被尊称为什么 老子被后人尊称为什么? 老子被称为 孔子被称为 股市中秋十一休假几天 甜高粱有什么作用? 雅津甜高粱的主要用途 甜高粱全株含糖量多少 甜高粱和普通高粱有什么差别? 大力士甜高粱是多年生还是一年生 被嘲笑了.现在手写信是不是真的很傻 在科技发展的今天保留手写纸质书信是否还有必要? 现在这个时代用写信封书信交流是不是已经淘汰了?谢谢对生活问题大匠运斤者 信息时代写纸质信给自己喜欢的人,会不会显得很老土? 电影《了不起的盖茨比》为什么会是个悲剧? 盖茨比的悲剧是怎么形成的 消防新规三十二个点 造成盖茨比悲剧的原因 消防法规定 了不起的盖茨 盖茨比为什么是悲剧英雄 盖茨比失败原因 上海消防是否规定排烟风管连接要用角铁 盖茨比的死是悲剧吗 《上海市消防局文件--关于发布《大中型商场防火技术规定》的通知(doc 8)》 商业的无良商人,感情上的一片真情,盖茨比的爱情为何充满悲剧性? 《了不起的盖茨比》中,为什么没有黛西没有选择盖茨比? 伟大的盖茨比 支导线 A-B-C1-C2-C3-C4,如图 6-47所示。其中, A , B 为坐标已知的点, 支导线4个点可以求坐标,方位角,运行出来的代码 支导线坐标计算的特点? 图1-7-21为一支导线,根据图中给定的已知数据和观测数据,计算P点坐标。 求支导线测量及其平差的案例!!! 求问东方系列中的全部人物的名字(要全,只要名字就好)~ 道路测设大师6.3怎么设置才能计算桥墩下群桩的坐标!桥很长桩多单个计算太麻烦了。谢谢指教!
  • 焦点

最新推荐

猜你喜欢

热门推荐