1.美颜SDK是滤镜滤镜什么?虹美颜SDK对接开发指南
2.这样的网页透明效果是怎么做出来的!
3.FFmpeg学习(一)开篇
4.图源码是源码什么
5.Python也能成为毕加索?我用Python给**姐画了幅油画
6.FFmpeg源码分析:视频滤镜介绍(上)
美颜SDK是什么?虹美颜SDK对接开发指南
美颜SDK是提供美颜、滤镜、开源贴纸等特效功能的滤镜滤镜软件开发工具包。在直播、源码短视频平台中,开源在线制作 源码为了给用户提供美颜、滤镜滤镜滤镜、源码贴纸等能力,开源通过集成第三方美颜SDK来提升用户体验,滤镜滤镜从而节省自研成本和时间。源码虹图美颜SDK提供了丰富功能,开源包括美肤、滤镜滤镜美型、源码风格滤镜、开源高级滤镜等,适用于多种应用场景。
在集成虹图美颜SDK时,遵循以下步骤以实现无缝对接:
首先,创建应用并登录用户中心控制台,进行应用名称和包名的配置,下载HTEffectDemo源码,对工程文件进行相应配置,包括替换Android和iOS的标签值、初始化HTEffect方法参数等。
其次,完成工程编译运行,确保虹图的示例工程可以正常运行,然后开始将SDK集成到自己的工程中。
对于iOS接入,导入HTEffect.framework和HTEffect.bundle,配置Xcode的属性,确保能正常运行并使用HTUI(可选),通过初始化、云雁源码渲染步骤和销毁操作实现与SDK的集成。同时,配置资源文件以支持自定义设置。
对于Android接入,同样导入相关文件和依赖,配置并集成HTUI(可选),定义渲染步骤,并在销毁时释放资源。集成过程中,需要关注人脸检测功能的实现。
在接入过程中,特别需要注意初始化步骤的正确执行,确保SDK在应用启动时能正常运行。通过控制台查看InitInfo,可以获取SDK的具体版本信息和初始化状态,以确保集成的成功。
总的来说,虹图美颜SDK的集成过程较为简便,通过遵循官方文档和示例工程的指引,可以实现美颜功能的快速部署。同时,支持美颜预览页面设置参数,可实现预览并保存美颜参数,便于用户在直播或使用时直接应用预设的美颜效果,提升用户体验。
这样的网页透明效果是怎么做出来的!
应该是用CSS的filter(滤镜效果)~
第一种:加入带有颜色的遮罩一样的半透明效果。
源代码为:
<STYLE type=text/css>
.bodyBg { background:#transparent;filter:progid:DXImageTransform.Microsoft.gradient(GradientType ='1',enabled='true',startColorstr=#AAFFFFFF, endColorstr=#AAFFFFFF);}
</STYLE>
代码中:startColorstr=#AAFFFFFF 前面的AA是透明度,修改成FF是不透明,是全透明,后面的 FFFFFF 是颜色,就是说在上面蒙什么颜色的东西,正常使用这个效果startColorstr=#AAFFFFFF和 endColorstr=#AAFFFFFF 后面的mario 复刻源码=#AAFFFFFF数值要一样!
2.简易透明效果。
将上面的渲染方式改为:filter:alpha(opacity=),是透明值,为不透明,0为全透明。
3.其实CSS还有很多其他的渲染方式~付上其他的一些渲染代码。
黑白照片 filter: gray;
X光照片 filter: Xray;
风动模糊 filter: blur(add=true,direction=,strength=);
正弦波纹 filter: Wave(Add=0, Freq=, LightStrength=1, Phase=0, Strength=3);
半透明效果 filter: Alpha(Opacity=);
线型透明 filter: Alpha(Opacity=0, FinishOpacity=, Style=1, StartX=0, StartY=0, FinishX=, FinishY=);
放射透明 filter: Alpha(Opacity=, FinishOpacity=, Style=2, StartX=, StartY=, FinishX=, FinishY=);
白色透明 filter: Chroma(Color=#FFFFFF);
降低色彩 filter: grays;
底片效果 filter: invert;
左右翻转 filter: fliph;
垂直翻转 filter: flipv;
投影效果 filter:progid:dXImageTransform.Microsoft.DropShadow(color=#cccccc,offX=5,offY=5,positives=true);
马赛克 filter:progid:dXImageTransform.Microsoft.Pixelate(maxsquare=3);
发光效果 filter:progid:dXImageTransform.Microsoft.Glow(color=#cccccc,Strength=5);
柔边效果 filter:alpha(opacity=, finishOpacity=0,style=2
希望你能把自己的博客做得与众不同~
FFmpeg学习(一)开篇
为什么要学习FFmpeg?本人希望深入研究音视频领域,音视频领域内容丰富,我计划从多个方面逐步学习:FFmpeg常用功能实践、FFmpeg源码研究、OpenGL、OpenGLES、Metal、AR、WebRTC、直播架构等。
当前音视频有哪些应用场景?从众多应用场景可以看出,音视频技术至关重要,尤其在5G时代,网络传输问题得到极大提升,音视频需求将爆发式增长。以下是一个简单播放器架构图:
音频解码和视频解码一般使用FFmpeg解码,iOS8之后提供了VideoToolBox框架支持硬解码。视频渲染通常使用OpenGL直接利用GPU渲染,还有GPUImage、SDL、VLC等第三方框架。
音视频播放中的音视频同步是一项复杂的技术。学习一项技术需要高效的方法,只有不断实践才能深刻理解。学习FFmpeg也需要好的文档,以下列举一些必备的学习文档地址:
以上都是英文文档,如果英文学习困难,可以参考以下中文资料:
此外,源码笔记04推荐两本非常好的书籍:
相关学习资料推荐,点击下方链接免费报名,先码住不迷路~
1. FFmpeg简介:FFmpeg是一套用于记录、转换数字音频、视频并将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。FFmpeg在Linux平台下开发,但也可以在其他操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,年至年间由Michael Niedermayer主要负责维护。许多FFmpeg的开发人员都来自MPlayer项目,当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。
2. FFmpeg能做什么
3. FFmpeg架构模块组成:我们先看一张FFmpeg的架构图:
下载好的源码,我们也可以看到大致的源码结构:
3.1 libavutil
3.2 libavformat
FFmpeg是否支持某种媒体封装格式,取决于编译时是否包含了该格式的封装库。根据实际需求,可进行媒体封装格式的扩展,增加自己定制的封装格式,即在AVFormat中增加自己的封装处理模块。
3.3 libavcodec
AVCodec中实现了目前多媒体绝大多数的编解码格式,既支持编码,也支持解码。AVCodec除了支持MPEG4、AAC、源码笔记031MJPEG等自带的媒体编解码格式之外,还支持第三方的编解码器,如H.(AVC)编码,需要使用x编码器;H.(HEVC)编码,需要使用x编码器;MP3(mp3lame)编码,需要使用libmp3lame编码器。如果希望增加自己的编码格式或硬件编解码,则需要在AVCodec中增加相应的编解码模块。
3.4 libavfilter
3.5 libavdevice
3.6 libswscale
3.7 libpostproc
3.8 libswrressample
3.9 ffmpeg
3. ffsever
3. ffplay
4. FFmpeg安装:下载源码后,我们可以查看一下目录结构:
输入./configure --help命令查看配置信息
内容太多需要分页,输入./configure --help | more
从上面的帮助,我们可以尝试输入:./configure --list-decoders查看所有解码器
接下来我们可以尝试输入:./configure --list-encoders查看所有编码器
接下来我们可以尝试输入:./configure --list-filters查看所有滤镜器
接下来我们可以尝试输入:./configure --list-muxers查看FFmpeg的封装,封装Muxing是指将压缩后的编码封装到一个容器格式中,我们输入./configure --list-muxers来查看FFmpeg支持哪些容器格式:
从上面打印信息来看,FFmpeg支持生成裸流文件,如H.、AAC、PCM,也支持一些常见的格式,如MP3、MP4、FLV、M3U8、WEBM等。
从上面解封装又称为解复用格式的支持信息中可以看到,FFmpeg支持的demuxter非常多,包含image、MP3、FLV、MP4、MOV、AVI等。
从支持的协议列表中可以看到,FFmpeg支持的流媒体协议比较多,包括MMS、HTTP、HTTPS、HLS、RTMP、RTP,甚至支持TCP、UDP,它还支持使用file协议的本地文件操作和使用concat协议支持的多个文件串流操作。
接下来我们可以尝试输入:./configure --list-parsers查看FFmpeg支持的解析器
接下来我们可以尝试输入:./configure --list-bsfs查看FFmpeg支持的字节流过滤器
接下来我们可以尝试输入:./configure --list-indevs查看有效的输入设备
接下来我们可以尝试输入:./configure --list-outdevs查看有效的输出设备
图源码是什么
图源码是图像的源代码。 详细解释如下: 图源码的概念: 图源码,顾名思义,指的是图像的源代码。这通常涉及到图像的处理、生成或编辑所使用的编程语言和代码。在数字时代,随着计算机技术的发展,越来越多的图像处理和编辑工作依赖于软件编程。这些源代码可能是为了生成特定的图像效果、实现某种图像算法或者是进行图像的数据分析。 图源码的内容: 图源码的具体内容会依据其用途和平台而有所不同。例如,在网页开发中,图源码可能涉及到HTML标签定义图像的属性,如大小、位置等,同时可能包含CSS样式来美化图像外观。如果是图像处理软件中的图源码,可能涉及到图像处理算法、滤镜效果等,使用特定的编程语言编写。此外,一些高级的图形应用如游戏开发中的图像渲染,源码可能包含复杂的图形处理算法和计算逻辑。 应用场景: 图源码广泛应用于多个领域。在网站开发中,设计师或开发者使用图源码来创建具有吸引力和响应式的网页图像。在图像处理领域,摄影师或设计师使用图源码来实现各种图像编辑效果。在游戏开发领域,图源码是实现高质量图像渲染和动画的关键部分。此外,随着人工智能和机器学习的发展,图源码也在图像识别、数据分析等领域发挥着重要作用。 总的来说,图源码是处理、编辑和实现图像效果的关键工具,其内容和应用取决于具体的使用场景和平台。随着技术的进步,图源码的应用将越来越广泛。Python也能成为毕加索?我用Python给**姐画了幅油画
小编的室友最近遇到了艺术系的女神,画功了得,让人羡慕。不甘落后的小编决定用Python来展示技术的魅力,就用它来给加上油画滤镜,看看效果如何。今天,我就来分享这个过程,用简单易懂的方式解释背后的原理。
首先,将转油画的原理是这样的:通过一系列算法步骤,将原图转化为灰度图像,并进行归一化处理。接着,程序会遍历,对每个小区域进行像素值分析,统计出现频率最高的像素值,然后计算平均值,模拟油画的效果。这个过程可能会稍显耗时,但耐心等待,一幅艺术气息十足的油画就完成了。
如果你对源码或者详细步骤感兴趣,不用担心,我们会在B站制作教程视频,一步步详解整个过程,并附上源码。此外,如果你对Python有其他疑问或者想学习更多好玩的Python应用,不妨关注我们的公众号菜鸟学Python,那里有丰富的原创案例,涵盖了Python入门到进阶的方方面面,还有实战经验、数据分析和机器学习等内容,期待你的加入。
现在就让我们动手操作,用Python画出一幅属于你的艺术作品吧!
FFmpeg源码分析:视频滤镜介绍(上)
FFmpeg在libavfilter模块提供了丰富的音视频滤镜功能。本文主要介绍FFmpeg的视频滤镜,包括黑色检测、视频叠加、色彩均衡、去除水印、抗抖动、矩形标注、九宫格等。
黑色检测滤镜用于检测视频中的纯黑色间隔时间,输出日志和元数据。若检测到至少具有指定最小持续时间的黑色片段,则输出开始、结束时间戳与持续时间。该滤镜通过参数选项rs、gs、bs、rm、gm、bm、rh、gh、bh来调整红、绿、蓝阴影、基调与高亮区域的色彩平衡。
视频叠加滤镜将两个视频的所有帧混合在一起,称为视频叠加。顶层视频覆盖底层视频,输出时长为最长的视频。实现代码位于libavfilter/vf_blend.c,通过遍历像素矩阵计算顶层像素与底层像素的混合值。
色彩均衡滤镜调整视频帧的RGB分量占比,通过参数rs、gs、bs、rm、gm、bm、rh、gh、bh在阴影、基调与高亮区域进行色彩平衡调整。
去除水印滤镜通过简单插值抑制水印,仅需设置覆盖水印的矩形。代码位于libavfilter/vf_delogo.c,核心是基于矩形外像素值计算插值像素值。
矩形标注滤镜在视频画面中绘制矩形框,用于标注ROI兴趣区域。在人脸检测与人脸识别场景中,检测到人脸时会用矩形框进行标注。
绘制x宫格滤镜用于绘制四宫格、九宫格,模拟画面拼接或分割。此滤镜通过参数x、y、width、height、color、thickness来定义宫格的位置、大小、颜色与边框厚度。
调整yuv或rgb滤镜通过计算查找表,绑定像素输入值到输出值,然后应用到输入视频,实现色彩、对比度等调整。相关代码位于vf_lut.c,支持四种类型:packed 8bits、packed bits、planar 8bits、planar bits。
将彩色视频转换为黑白视频的滤镜设置U和V分量为,实现效果如黑白视频所示。
å ¨ç«CSS代ç ï¼
ç½é¡µç°åï¼æçç½ç«å¦ä½å¤çæç°åç¶æï¼ï¼è¦æç®ä¾¿çæ¹æ³ï¼å¯ä»¥å¿«éæ¢å¤ãï¼
è¿ä¸ªæ¯éè¿CSSæ§å¶ç½é¡µçï¼å½å®¶æ²¡è§å®è¿ä¸ªå¿ 须强å¶æ§è¡çï¼è¿ä¸ªæ¯äºèç½è¡ä¸èªè¡ç»ç»çï¼ä¸è¿è¿æ¯æå¾å¤ç½ç«æ²¡è¿æ ·åï¼è¿ä¸ªé½æ¯ç«é¿çè¡ä¸ºï¼æ²¡äººä¼ç®¡çä½ æ¯å¦æ¢é¢è²ï¼
å ·ä½å®ç°æ¹æ³æ¯ï¼
1ãå ¨ç«CSS代ç
html{ filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);}æ*{ filter:gray;color:gray;}
å å¨CSSæ件ä¸å³å¯å®ç°ã
2ãå¦æç½ç«æ²¡æ使ç¨CSSï¼å¯ä»¥å¨ç½é¡µ/模æ¿çHTML代ç headå/headä¹é´æå ¥ï¼
stylehtml{ filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);}/style
å¦æ以ä¸çä¸çæï¼æ¯å 为ç½ç«æ²¡æ使ç¨ææ°çç½é¡µæ ååè®®ï¼å°±ç¨ä»¥ä¸è¿ä¸ªï¼
!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"""
htmlxmlns=""
请å°ç½é¡µæ头é¨çhtmlæ¿æ¢ä¸ºä»¥ä¸ä»£ç ã
3ãæä¸äºç½ç«FLASHå¨ç»çé¢è²ä¸è½è¢«CSS滤éæ§å¶ï¼å¯ä»¥å¨FLASH代ç çobjectâ¦å/objectä¹é´æå ¥ï¼paramvalue="false"name="menu"/
paramvalue="opaque"name="wmode"/
4ãæç®åçæ页é¢åæç°è²ç代ç æ¯å¨headä¹é´å ï¼
styletype="text/css"
html{
FILTER:gray
}
/style
5ãä¸è¬çdiscuz论åå¨ä½ çæ§å¶cssæ件ä¸ä¿®æ¹
CSSæ件å¨è®ºåbbs/templates/æ¨ç¨çé£æ ¼æ件夹éçcss_common.htm
å ¶ä»æ¹æ³åä¸ã
æä¹æç½é¡µé¢è²æ¹å为é»ç½è²?ç½é¡µé¢è²åé»ç½ä»£ç
å½å¡é¢å³å®ï¼ä¸ºè¡¨è¾¾å ¨å½åæ人æ°å¯¹éæµ·çæ å°ééé¾åèçæ·±ååæ¼ï¼å¹´4ææ¥ä¸¾è¡å ¨å½åæ¼æ´»å¨ï¼å ¨å½åé©»å¤ä½¿é¢é¦ä¸åæå¿åï¼åæ¢å ¬å ±å¨±ä¹æ´»å¨ã
1ã为æ¹ä¾¿ç«ç¹åæ¼ï¼ç¹æä¾css滤é代ç ï¼ä»¥è¡¨åæ¼ã以ä¸ä¸ºå ¨ç«CSS代ç ã
html{ filter:progidXImageTransform.Microsoft.BasicImage(grayscale=1);}
å¤å¶ä»£ç
æï¼
*{ filter:gray;color:gray;}
å¤å¶ä»£ç
使ç¨æ¹æ³ï¼è¿æ®µä»£ç å¯ä»¥åç½é¡µä¸ºé»ç½ï¼å°ä»£ç å å°CSSæ顶端就å¯ä»¥å®ç°ç´ è£ ãå»ºè®®å ¨å½ç«é¿å¨èµ·æ¥ã为å¨å°éä¸éé¾çåèåæ¼ã
2ãå¦æç½ç«æ²¡æ使ç¨CSSï¼å¯ä»¥å¨ç½é¡µ/模æ¿çHTML代ç headå/headä¹é´æå ¥ï¼
style
html{ filter:progidXImageTransform.Microsoft.BasicImage(grayscale=1);}
/style
å¤å¶ä»£ç
3ãæä¸äºç«é¿çç½ç«å¯è½ä½¿ç¨è¿ä¸ªcssä¸è½çæï¼æ¯å 为ç½ç«æ²¡æ使ç¨ææ°çç½é¡µæ ååè®®
!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"""
htmlxmlns=""
å¤å¶ä»£ç
请å°ç½é¡µæ头é¨çhtmlæ¿æ¢ä¸ºä»¥ä¸ä»£ç ã
4ãæä¸äºç½ç«FLASHå¨ç»çé¢è²ä¸è½è¢«CSS滤éæ§å¶ï¼å¯ä»¥å¨FLASH代ç çobjectâ¦å/objectä¹é´æå ¥ï¼
paramvalue="false"name="menu"/
paramvalue="opaque"name="wmode"/
å¤å¶ä»£ç
5ãæç®åçæ页é¢åæç°è²ç代ç æ¯å¨headä¹é´å
styletype="text/css"
html{
FILTER:gray
}
/style
å¤å¶ä»£ç
6ãä¸è¬çdiscuz论åå¨ä½ çæ§å¶cssæ件ä¸ä¿®æ¹
CSSæ件å¨è®ºåbbs/templates/æ¨ç¨çé£æ ¼æ件夹éçcss_common.htm
å ¶ä»æ¹æ³åä¸
ç½ç«ç´ è£
å ¨å½åæ¼æ¥ç½ç«ç°é»è²CSS滤é代ç 6åç§å
æ ¹æ®å½å¡é¢æ件ï¼5.-5.ä¸ºå ¨å½åæ¼æ¥ï¼å¨æ¤æé´ï¼å ¨å½ååé©»å¤æºæä¸åæå¿åï¼åæ¢å ¬å ±å¨±ä¹æ´»å¨ï¼å¤äº¤é¨åæå½é©»å¤ä½¿é¢é¦è®¾ç«ååç°¿ã5ææ¥æ¶åèµ·ï¼å ¨å½äººæ°é»å3åéï¼å±æ¶æ±½è½¦ãç«è½¦ãè°è¹é¸£ç¬ï¼é²ç©ºè¦æ¥é¸£åãå¾å¤èæ ¹ç½ç«é½å°æ´ç«æ¢æç´ è£ ã并建议ä¸å½ææç«ç¹æ´æ¢ä¸ºç´ è£ ãå½å¡é¢å³å®5ææ¥è³æ¥ä¸ºå ¨å½åæ¼æ¥
为æ¹ä¾¿ç«ç¹åæ¼ï¼ç¹æä¾css滤é代ç ï¼ä»¥è¡¨åæ¼ã以ä¸ä¸ºå ¨ç«css代ç ã
代ç :html{ filter:progid:dximagetransform.microsoft.basicimage(grayscale=1);}
使ç¨æ¹æ³ï¼è¿æ®µä»£ç å¯ä»¥åç½é¡µä¸ºé»ç½ï¼å°ä»£ç å å°cssæ顶端就å¯ä»¥å®ç°ç´ è£ ãå»ºè®®å ¨å½ç«é¿å¨èµ·æ¥ã为å¨å°éä¸éé¾çåèåæ¼ã
å¦æç½ç«æ²¡æ使ç¨cssï¼å¯ä»¥å¨ç½é¡µ/模æ¿çhtml代ç headå/headä¹é´æå ¥ï¼
style
html{ filter:progid:dximagetransform.microsoft.basicimage(grayscale=1);}
/style
æä¸äºç«é¿çç½ç«å¯è½ä½¿ç¨è¿ä¸ªcssä¸è½çæï¼æ¯å 为ç½ç«æ²¡æ使ç¨ææ°çç½é¡µæ ååè®®
!doctypehtmlpublic"-//w3c//dtdxhtml1.0transitional//en"""
htmlxmlns=""
请å°ç½é¡µæ头é¨çhtmlæ¿æ¢ä¸ºä»¥ä¸ä»£ç ã
æä¸äºç½ç«flashå¨ç»çé¢è²ä¸è½è¢«css滤éæ§å¶ï¼å¯ä»¥å¨flash代ç çobjectâ¦å/objectä¹é´æå ¥ï¼
paramvalue="false"name="menu"/
paramvalue="opaque"name="wmode"/
æç®åçæ页é¢åæç°è²ç代ç æ¯å¨headä¹é´å
styletype="text/css"
html{
filter:gray
}
/style
å¦å¨åæ¼æ¥æéé¾çæ°é»ï¼ææä¸é¢å主é¢å¾çä¸ä¸è½ä½¿ç¨çº¢è²æ é¢ã
注æ:æ¬å¸è½¬è½½,éåå
ç½ç«å»è²æä¹å¼æ¯å½éå°å ¨å½åæ¼æ¥ï¼ç¦æ¢å¨±ä¹æ´»å¨ï¼ç»å¸¸ç®åçç½ç«ç°è²æ¼å¿µï¼å®ç°æ¹æ³å¦ä¸ï¼
CSS代ç :(æå ¥å°CSSæ件çæ顶端)
html{ filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);}?
æè :?
*{ filter:Gray;}?
HTML代ç :(æå ¥å°é¡µé¢HTMLæºç çHEADå/HEADä¹é´)?
stylehtml{ filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);}/style?
æè :?
styletype="text/css"html{ FILTER:gray}/style
cssææ¶ï¼å¦æ让æ´ä¸ªé¡µé¢é½åé»ç½?ï¼å å°cssæ ·å¼é?
body{ filter:Gray;}?
å¦æå 让å¾çåé»ç½?
img{ filter:Gray;}?
å¦æåªè®©æå®å¾çæ¯å¦logoç°è²?
ç°å¨csséå»ºä¸ªæ ·å¼å¦?
.huise{ filter:Gray;}?
ç¶åç»å¾çæè¡¨æ ¼æå®è¯¥æ ·å¼?
imgsrc=logo.gifclass="huise"?
ææè¦ç°è²çä¸ç¨ç¨divclass="huise"/divå æ¬èµ·æ¥
html{ filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);}?
è¿æ®µä»£ç å¯ä»¥åç½é¡µä¸ºé»ç½ï¼å°ä»£ç å å°CSSæ顶端就å¯ä»¥å®ç°ç´ è£ ã?
å¦æç½ç«æ²¡æ使ç¨CSSï¼å¯ä»¥å¨ç½é¡µ/模æ¿çHTML代ç headå/headä¹é´æå ¥ï¼?
style?
html{ filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);}?
/style?
æä¸äºç½ç«å¯è½ä½¿ç¨è¿ä¸ªcssä¸è½çæï¼æ¯å 为ç½ç«æ²¡æ使ç¨ææ°çç½é¡µæ ååè®®?
!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"""?
htmlxmlns=""?
请å°ç½é¡µæ头é¨çhtmlæ¿æ¢ä¸ºä»¥ä¸ä»£ç ã?
æä¸äºç½ç«FLASHå¨ç»çé¢è²ä¸è½è¢«CSS滤éæ§å¶ï¼å¯ä»¥å¨FLASH代ç çobjectâ¦å/objectä¹é´æå ¥ï¼?
paramvalue="false"name="menu"/?
paramvalue="opaque"name="wmode"/?
æç®åçæ页é¢åæç°è²ç代ç æ¯å¨headä¹é´å ?
styletype="text/css"?
html{ ?
FILTER:gray?
}?
/style