搜索 社区服务 统计排行 帮助
  • 11764阅读
  • 37回复

[原创]在影片中加入图片logo的方法(2005.2.25更新)

楼层直达
级别: 新手上路
注册时间:
2005-02-19
在线时间:
0小时
发帖:
31
软件下载:
AviSynth
http://sourceforge.net/project/showfiles.php?group_id=57023
VirtualDubMod
http://sourceforge.net/project/showfiles.php?group_id=65889
GIF Movie Gear
http://www.moviegear.com/gmgdown.htm
GSpot
http://dl.163.com/downloadthis.php?id=18461&temp=/GSpot25b8.rar
Adobe PhotoshopACDsee等制图工具

一.静态logo

可以通过AviSynth或VirtualDubMod加载静态logo;先讨论AviSynth方法:

处理背景色:
1.用colorkeymask滤镜;
2.用mask滤镜;

1.colorkeymask滤镜:
(1)logo的选取
选择一定分辩率的图片,在图像编辑器里编辑好尺寸,尽量不要在脚本里用resize滤镜.

(2)编写脚本
<1>若图片背景为纯白色,比如




脚本:
引用

v1=AviSource("G:\Sample\AVI\s01.avi").converttorgb32
v2=ImageReader("G:\Sample\pics\p01.jpg").converttorgb24.flipvertical()
v3=v2.converttorgb32.colorkeymask($FFFFFF,20)
Layer(v1,v3,"add",255,0,0)


解说:
v1=AviSource("G:\Sample\AVI\s01.avi").converttorgb32
#以AviSource方式读取影片来源;改变成converttorgb32的颜色环境

v2=ImageReader("G:\Sample\pics\p01.jpg").converttorgb24.flipvertical()
#以ImageReader方式读取logo来源;改变成converttorgb24的颜色环境,也可以写为converttorgb32;flipvertical()为翻转滤镜

v3=v2.converttorgb32.colorkeymask($FFFFFF,20)
#将colorkeymask滤镜应用到logo

Layer(v1,v3,"add",255,0,0)
#合并v1(影片),v3(logo);Layer函数中覆盖强度为255,图片主体不透明;图片坐标值为0,0,在左上角

colorkeymask滤镜的说明:
colorkeymask(int color,int tolerance)
int color:色彩深度---16进制: $xxxxxx,x取值为0-f; 10进制:0-255
int tolerance:取值0-255,在int color固定时,随int tolerance值的增大,图片趋向透明.

colorkeymask($FFFFFF,40)中先固定int color为$FFFFFF,调节int tolerance使图像达到最佳效果,int tolerance值过小,背景色不能完全去掉;int tolerance值过大,导致主体颜色损失,此处为20.这里$FFFFFF若改为10进制数起不到去掉背景色的作用.



可见logo有一定的损失.


<2>若图片背景为其它纯色,比如

方法a.确定背景色的RGB数值,将int color用RGB的十六进制形式表示.(RGB三原色在WINDOWS有相应的值以16进制编译,定义了256种色彩深度即0-FF,但在SSA中是以BGR形式表示出来的.若R:46,G:139,B:87,则RGB:2E8B57,BGR:578B2E)
方法b.将背景色改为纯白色,修改办法在第2部分的mask滤镜方法中,修改后再按<1>加载.

下面讨论方法a

获得背景颜色代码的方法:
打开WINDOWS"附件"中的"画图",点击工具栏里的"取色",选择背景色;打开"颜色"菜单,编辑颜色,规定自定义颜色,得到R:152,G:115,B:211,即RGB: 9873D3,用BGR表示为BGR: D37398.

或打开Adobe Photoshop,点击工具栏里的"吸管工具",也可以得到RGB的十进制数值.



转换为16进制的方法:
直接计算或打开Sub Station Alpha v4.08在Style Override中的"colour"规定自定义颜色,即可显示BGR数值,再转换为RGB形式即可.



脚本:
引用

v1=AviSource("G:\Sample\AVI\s01.avi").converttorgb32
v2=ImageReader("G:\Sample\pics\p03.jpg").converttorgb24.flipvertical()
v3=v2.converttorgb32.colorkeymask($9873D3,40)
Layer(v1,v3,"add",255,0,0)


注:colorkeymask($9873D3,40)中先固定int color为$9873D3,调节int tolerance到40去掉背景色;在去掉背景色后,int tolerance的值要尽量的小.



主体颜色有少量损失.

将以上脚本中的colorkeymask($9873D3,40)改为colorkeymask(255,165),其它不变



主体颜色损失严重.

若将colorkeymask($9873D3,40)改为colorkeymask(60,165),其它不变



主体颜色损失严重.

若将colorkeymask($9873D3,40)改为colorkeymask(0,220),其它不变



主体颜色损失十分严重.

总结:
若int color采用16进制的某个颜色(一般选用背景色的RGB值),当int tolerance值的增大到一特定值时,该颜色消失.(当采用16进制不能去掉背景色时,可尝试采用10进制)
若int color采用10进制的某个颜色(一般先固定int color为255),变动int tolerance的值,选择去掉背景色的最佳数值,再固定int tolerance的值,回过头来调节int color的数值,使图像效果达到最佳.
无论采用16进制还是10进制,随int tolerance值增大,主体颜色都会减弱.


<3>若图片背景为杂色,比如



方法a.将背景色改为纯白色,修改办法在第2部分的mask滤镜方法中,修改后再按<1>加载.
方法b.用mask函数实现透明.

级别: 骑士
注册时间:
2006-09-22
在线时间:
0小时
发帖:
965
只看该作者 37楼 发表于: 2010-01-28
完全不记得三年前我跟过一个帖子.....

级别: 新手上路
注册时间:
2009-12-26
在线时间:
0小时
发帖:
1
只看该作者 36楼 发表于: 2010-01-28
帖子很不错的说了啊 虽然很老 就是图片都挂了 纠结啊
级别: 新手上路
注册时间:
2008-07-17
在线时间:
0小时
发帖:
9
只看该作者 35楼 发表于: 2008-07-30
一张图都看不到…… 汗阿
级别: 精灵王
注册时间:
2005-12-24
在线时间:
45小时
发帖:
2298
只看该作者 34楼 发表于: 2007-09-07
掘墓还聊天,都是能人

在长长地换硬件的道路上,纠结前进中
级别: 骑士
注册时间:
2006-09-22
在线时间:
0小时
发帖:
965
只看该作者 33楼 发表于: 2007-09-07
LZ能把图补下嘛...全部都是叉....

级别: 新手上路
注册时间:
2007-06-19
在线时间:
0小时
发帖:
10
只看该作者 32楼 发表于: 2007-08-31
v1=AviSource("G:\Sample\AVI\s01.avi").converttorgb32
v2=ImageReader("G:\Sample\pics\p18.png").converttorgb32.flipvertical()
v3=ImageReader("G:\Sample\pics\p19.png").converttorgb32.flipvertical()
v2=v2.mask(v3).FadeIO(24)
v4=trim(v1,0,119)
v5=trim(v1,120,359).Layer(v2,"add",255,460,0)
v6=trim(v1,360,0)
return v4+v5+v6

奇怪了,这个方法只要时间超过1分半,图片就消失了。。。。
级别: 精灵王
注册时间:
2004-07-26
在线时间:
18小时
发帖:
3730
只看该作者 31楼 发表于: 2007-07-07
引用
最初由 星之失 发布
不是我,我只对小龙女有兴趣,李莫愁就算了。


想要小龍女 請斷臂一只先。 

李莫愁可以不用,但要求你持久力要有一定水準。



沉默是金................
懂得不多,就单单学会点人家传授的皮毛就一付不得了了的语气的,让人看了就只会觉得他是小丑~ 有本事自创一个有新意的理论..

高手不是挂在嘴上的~~ 挂在嘴上的叫高嘴
谦虚是美德~

  
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
  
========================================
免费诊测你的IP~~ :p :p (看不到说明有RPWT)
级别: 骑士
注册时间:
2003-08-28
在线时间:
6小时
发帖:
1306
只看该作者 30楼 发表于: 2007-07-07
不是我,我只对小龙女有兴趣,李莫愁就算了。

Why Don't You Do Your Best?
---------------------------------
You gotta take chances for the things you care about.
---------------------------------
A man is never taller when he's on his knees.
---------------------------------
Someone:I thought there were no more heros foolish enough to come around here and die for our gold.

Beowulf:If we die,it'll be for glory,not for gold.
级别: 精灵王
注册时间:
2005-12-13
在线时间:
0小时
发帖:
3859
只看该作者 29楼 发表于: 2007-07-07
= = 谁将罗拉推倒了OTL

= =
级别: 工作组
注册时间:
2003-11-07
在线时间:
1小时
发帖:
7032
只看该作者 28楼 发表于: 2007-07-07
古墓?有丽影么?

青空が眩しい 君がいる風景は
幸せのオーラ 溢れ出すの とまらないよ
駅前の噴水 虹を作っているよ
君を待つ時間さえも かけがえない プレシャスな時

=========================

FANSUB的历史,又翻过了新的一页
级别: 超级版主
注册时间:
2004-07-25
在线时间:
121小时
发帖:
3898
只看该作者 27楼 发表于: 2007-07-07
谁又把古墓挖出来了

级别: 新手上路
注册时间:
2007-07-07
在线时间:
0小时
发帖:
20
只看该作者 26楼 发表于: 2007-07-07
好厉害,,,全暴走

不签就不签,,有什么了不起,,什么叫灌水,什么叫刷屏,,
级别: 骑士
注册时间:
2004-06-04
在线时间:
0小时
发帖:
1170
只看该作者 25楼 发表于: 2005-02-28
这个教程真是好,方法很全,楼主辛苦了
级别: 新手上路
注册时间:
2005-02-19
在线时间:
0小时
发帖:
31
只看该作者 24楼 发表于: 2005-02-28
忘了说,如果是做avi,用logo.vdf最方便

快速回复

限150 字节
上一个 下一个