如果对GIF进行模糊化加边扩增
【摘要】
▌01 为何需要进行模糊化扩边?
在很多视频讲解节目中,很多情况下需要抓取网络上的一些视频、图片资料。在存在以下几种情况使其无法适应当前高清画面的只做需求:
原始图像资源分辨率低;...
▌01 为何需要进行模糊化扩边?
在很多视频讲解节目中,很多情况下需要抓取网络上的一些视频、图片资料。在存在以下几种情况使其无法适应当前高清画面的只做需求:
- 原始图像资源分辨率低;
- 原始图片中存在一些LOGO区域,需要在抓取的时候切割掉;
- 原始图片的长宽比不符合最终节目源的要求;
在此情况下,需要将抓取到的视频节目进行调整。当前的调整包括两种情况:
- 在原有的视频图片背后增加一个大的清晰背景;
- 将原来的视频图片进行模糊加边;
下面给出了原始的视频与加边后的效果对比。
▲ 原版GIF图片
▲ 增加模糊化边缘之后的GIF
在附件中给出了使用PYTHON程序对于GIF进行模糊加边扩展的算法。
※ 附件
1.进行GIF模糊化扩边Python程序
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# GIFBLUR.PY -- by Dr. ZhuoQing 2021-02-21
#
# Note:
#============================================================
from head import *
from PIL import Image,ImageFilter
#------------------------------------------------------------
gifid = tspgetgifid()
if len(gifid) == 0:
printf("No gif DOP.\a")
exit()
viewsize = tspgetviewdcrange()
viewWidth = viewsize[4]
viewHeight = viewsize[5]
#------------------------------------------------------------
dopfile = tspgetdopfile(gifid[0])
gifpages = tspgetgifpage(gifid[0])
filepath = os.path.dirname(dopfile)
filebase = os.path.basename(dopfile)
fileext = filebase.split('.')[1]
#------------------------------------------------------------
gifviewratio = 0.8
def pic2blurside(picfile, ratio):
image = Image.open(picfile).convert('RGB')
imgdata = image.getdata()
imgwidth = imgdata.size[0]
imgheight = imgdata.size[1]
#--------------------------------------------------------
if imgwidth/imgheight > viewWidth/viewHeight:
view0_w = imgwidth
view0_h = imgwidth * viewHeight / viewWidth
viewi_h = imgheight
viewi_w = imgheight * viewWidth / viewHeight
else:
view0_h = imgheight
view0_w = imgheight * viewWidth / viewHeight
viewi_w = imgwidth
viewi_h = imgwidth * viewHeight / viewWidth
view1_w = int(view0_w / ratio)
view1_h = int(view0_h / ratio)
#--------------------------------------------------------
left = int((imgwidth - viewi_w) / 2)
right = imgwidth - left
top = int((imgheight - viewi_h) / 2)
bottom = imgheight - top
imgcrop = image.crop((left, top, right, bottom))
imgview = imgcrop.resize((view1_w, view1_h), resample=1)
imgview = imgview.filter(ImageFilter.GaussianBlur(radius=20))
left = int((view1_w - imgwidth)/2)
top = int((view1_h - imgheight)/2)
imgview.paste(image, (left, top))
imgview.save(picfile)
#------------------------------------------------------------
if len(sys.argv) > 1:
gifviewratio = float(sys.argv[1])
printf("Proc GIF:%s/%d/%5.2f\a"%(filebase, gifpages, gifviewratio))
#------------------------------------------------------------
for i in range(gifpages):
filename1 = '%04d.%s'%(i, fileext)
giffile = os.path.join(filepath, filename1)
tspshowinfor('%d '%i)
pic2blurside(giffile, gifviewratio)
#------------------------------------------------------------
printf("\a")
tsprefreshimagebuffer()
tsprv()
#------------------------------------------------------------
# END OF FILE : GIFBLUR.PY
#============================================================
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
文章来源: zhuoqing.blog.csdn.net,作者:卓晴,版权归原作者所有,如需转载,请联系作者。
原文链接:zhuoqing.blog.csdn.net/article/details/113916304
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)