00:01
那么继续来上课,那么这节课呢,我们再来实现我们这个功能文件中的最后一个功能,也就是我们这个缩略图的功能,对吧?缩放的功能啊,隔比例缩放的功能,那么缩放的功能呢,其实我们已经写过了啊,那我可以把之前的文件拿过来,那么在这里呢,为了让大家再练习,再过一遍思谱啊,我把它先注释掉,这块我们先写一个注释啊,叫什么多文件上传的功能,哎,多文件你就调用它对吧?单文件呢,你就调用它,是不是两个不一样,哎,好了,那。我为了大家再去掌握一下,所以我在这个文件中,我还会再给大家再写一次啊好了,那这里边我们要实现什么,实现这个图片缩放的功能啊,叫做。图片缩放的功能f func function叫做HUB,同样这里边你要给我传一个图片的源路径。然后还有什么呢。你要保存的路径,还有你压缩缩放的宽,缩放的高,对吧,以及你的前置。叫什么,比如说叫S杠,好,那么有了这些以后,我是不是就可以干嘛,可以进行缩放了,当然这一切这剩下的这几个东西,我是不是都可以做默认,比如说在这里边我直接传,传什么呢?有这个做默认不太好用,对吧?这个应该默认什么呢?默认你传过来这个图片的路径,比如说你传过来是这样的一个路径,比如当前目录uplo的下边ABC下边叫做你好点GPG,这是原图对不对?你要把这张图进行缩放,那么保存应该保存到,是不是也应该保存到这里边对不对?所以这个径我不能给他什么,不能给他做默认啊,是这个书方的这个比例呢,我可以比如默认一个100,这块也给他一个默认宽高都100,这没问题,对吧?所以这两个我说不不能默认了,也就是说未来可能可能会在这个ABC里边还会有个什么,还会有一个叫做你好,或者叫。
01:46
S杠你好对吧?点GPG啊,甚至我可以S杠,什么杠100-100杠你好,什么意思?也就指的是这个缩略的比例是多少,是不是双方100乘100的。对不对,哎,那OK,这就是这几个参数。
02:01
好了,那接下来有了这个原图以后,我要干嘛?我是不是要去获取它的这个类型,获取到类型以后,因为我要知道它是什么样类型的这个图片,我才能用对应的类型这个函数打开,对吧?如果你是JPG的,我是不是就得用image create from JPG函数对吧?应该叫JPG是不是?如果你是PG的,那我就是image create from png是吧?如果你是GIF呢,我就得用image create from GIF是不是得对应对应用这个对应的功能来打开,所以在这里边我就不做判断了,直接获取完以后我们用什么用变量函数的方式来打开,这样的话对于我们的代码是不是更优化一些,对吧?那OK,第一件事儿我来干嘛呢?获取。传入图片的后缀。然后在这里边到了sufix等于LTL对吧,找到找到谁呢?不对,不是找到是三从哪三从str。RR里边。找到src面积,从这里面找到点,最后出现到这个位置,然后删掉最最左边的这个点,也就是我只要JPG就可以了,对不对?哎,那接下来我来判断,如果你拿到的这个后缀要是等于等于gpeg的话,我就得给它改成什么gpeg吧,就等于jpeg是不是就OK了?哎,那对应我们就开始变量函数的出现。
03:21
Dollar func等于什么呢?等于image iate from什么类型呢?Dollar Su这类型好了,那现在完事以后,接下来第一件事,准确说这才是真正第一件事,干嘛打开已有的图片,你看第二件事啊,咱不能叫第一件事,上面这是我们做的第一步操作,对不对?这块这是第一件事儿啊,这是第二件事儿,这是第三件事,打开一张已有的。打开已有的图片啊。图片资源。那Dollar,比如说这个就叫以面积吧,等于Dollar了func括号,然后把谁扔进去,是不是把这个src面积扔进来啊?
04:03
哎,好了,扔进来以后,接下来呢,我是不是要获取图片的宽高对吧,获取。原图片的宽。高啊,那我刀了这个WDTH宽度就等于以面积S差把形成里边把这个以面积漏进来,还有这个高度也就等于以面积SY。还是一样,把它扔进来好了,宽高都拿到以后,接下来干嘛?是不是要进行等比例缩放,第五件事叫做等比例缩放了,那等比例缩放的时候是有固定公式对吧?我就判断你实际的宽度是否小于你的这个高度,如果宽度小于高度的时候,那这个时候我就把你的高度是强制压缩到100,对吧?所以你的这个等高等高的变量,我就强制让它等于等于你的这个高度,那你的等宽变量呢,是不是也进行一个计算了,那就是我的真实的宽度去乘以。乘以谁啊?乘以我的这个高度除以我真实的高度。对吧,好了,那否则else也就是我的这个。
05:03
宽度给你强制让你变成100对吧,然后我的这个高呢,等高呢,就得去换算,也就。高度乘以谁呀?乘以我的宽度除以我的实际宽度,好,那是不是我压缩缩放的比例就有了,哎,有了缩放的比例,最终我是不是要去创建这个这个宽和这个高,也就是100乘100的画布,然后我把把图片拷贝到这个画布,然后让它居中显示啊,对不对?所以这里边我还需要什么呢?未来在拷贝的时候,我肯定需要有一个X变量,还需要有一个Y变量,是不是拷贝到目标地方的那个点呢?哎。好了,那在这里边我们先进行。创建画布。第六件事儿。创建画布啊,叫做Dollar new。等于什么呢?可CR。Image,呃,T触了啊,创建一个增窄的滑布,多宽多高,这个宽这个高是吧,然后接下来呢,我们给它去填充一个背景颜色啊BCK等于image color。
06:08
Al。Co,然后Co给Dollar了,Image里边不是是Dollar了new image里边分配一个什么呀,分配一个这个,呃,255255255这么一个白色的。背景对吧,然后给他去填充一下feel,也是填充给Dollar new Dollar new。以面积来填充零零,开始填充什么颜色,填充这个BC这个颜色好了,填充完以后,接下来看什么拷贝,也就是第七件事啊,拷贝图像了啊,拷贝图像用的是image拷贝,Re。这个对吧,然后这里面参数现在是什么?我的新资源,然后是我原图的资源,然后你新的这个X点和你新的Y点,那这个XY我是不是没有算,然后原图的00点对吧?以及你新图考多宽,是不是我的等宽和我的等高,这是我求出缩列的这个比例啊,哎,然后原图是多宽多高呢?是不是我width和我的he。
07:11
是不是就OK了,哎,好了,那这样完事以后,那接下来我们差的是什么,是不是就把这个X跟Y求出来。哎,那你看在这里边,如果你走到这里的时候,也就是说你的这个高度是等高,就是高度达到100了,那你的宽度有可能是75,那是不是要在这个100当中要居中,所以这里边我的刀X就应该等于什么,等于你这个要缩放的宽度减去你的等宽,再去除以一个二,是不是就是你缩放的比例。去居中的位置对吧,那给他做行做成做一个这个括号,让他先去算,他先算,算完以后再除对吧?那但这里边除只要是遇到除码,它就会有小数,所以我就用C给它进一取走,然后给它进于取走好了,那这个完事以后,那接下来那如果走到这里呢?走到这里那就证明你的宽度是先达到100的,那你比如说你宽度是100,那你的高度就有可能是75,对不对,所以你75位置是不是也要居中摆放,所以你这里的Dollar y是不是也依然如此,等于CL,那应该是你的高度去减去你的等高,然后再去除一个二就可以了。
08:13
好了,那这X跟Y这两个值我就已经有了啊,那么有了以后,接下来呢,我们就开始去。处理这个路径了吧,哎,处理保存图片路径的信息对吧,然后呢,这个第九个事儿呢,是不是就是这个处理呃,缩略图的名称对吧,然后接下来第十件事呢,才是真正的要干嘛?保存图片,保存完图片以后。释放。资源,然后。12、返回结果。是不是按照这一个流程我就搞定了,好了,那保存处理保存图片的信息。呃,保存图片的路径啊,是它的路径,也就是说它的路径是否存在对吧?所以在这里边我们得去获取一下它的路径啊,获取一下的径,那就要看一下啊他的路径。
09:07
在这儿。没有给,也就是说这里面这样我默认它等于一个空。默认等于空,如果默认等于空的话呢,我想想啊,因为之前我们说过了,你如果没有传路径信息的话。没有传这个路径信息的话。我们不能在当前目录去创建,我只能在他现有的这个目录里面去创建,对不对,哎,所以这里面,那我们就来判断一下吧。处理保存的图片路径,好也就在这里边,如果如果什么如果这个取反,EPTEPTY。Dollar pass,如果它不等于空的时候,也就是用户传入了,对吧,那传入的话,我这里面就用你传入的路径信息呗,那就是我的这个,呃。
10:01
判断去反。这个PA谁呢?糟了pass对吧,如果你不存在,那我make BI来去创建这个pass,同样也有可能我们会遇到递归对吧,所以我077,然后给他最高权限,再给它设置为处,给它递归七型创建啊好了,创建完以后,接下来我们要干嘛了?你看好了,在这里边创建,创建不为空的时候。不为空的时候,那这里边我的这个创建完以后。这块吧,我的Dollar pass,我重新去做一下,等于什么呢?就等于RT删掉我pass。P。啊,最右边的斜线,我自己再连上这个斜线对吧,哎,好了,然后接下来pass,现在是搞定了。Dollar pass等于RTM没问题了啊,Pass搞定了,也就我们的路径搞定了,路径搞定接下来是不是我的图片名称啊,那图片名称咱们也要处理一下,对吧,我说了我要干嘛呢?拿他原来的这个图片名称去做啊,所以第一件事我在这里边来干嘛?来获取原图名称啊,获取。
11:08
原图的。名称啊,以及。否则这块还少个,否则这里面什么是如果。没有传入图片则干嘛?则使用原图的。路径信息,那原图的路径信息pass应该等于什么?是不是就应该等于呃?叫做。ER,那是获取路径信息,获取谁的路径信息啊,获取这个,呃,到了。妹姐。Src面积这个路径信息啊,是不是这样的,哎,好,那咱们来看一下,我们在这里边先来去打印吧,Dup啊来DMP打印谁呢?打印这个pass。我们来看我们传与不传的这种情况啊,好了,现在是我没有传这个路径信息啊,来去调用在这里边,我们通过HUB在这里边,我只给他原图了,那看一下啊。
12:08
这里边LESSON19叫做uplo,对吧,Upload里边我们随便拿一张图片,比如说就拿这个吧,啊,给它进行一个缩放,来,Ctrl a ctrl c,我们只看录屏信息就可以了,来。那也就是当前目录uplo下边的这个图片,OK。其他的。没问题了,对吧,那现在我就让他传了这个我要缩放的这张图片,你看最终图片送完他给我保存的径是哪个径啊,一样在这个格萝卜里面,我再来刷新一下确定,确定完以后,你看拿的是不是当前目录lo的对吧?在哪在我143行打印的,那你再来去找我143行的代码是不是打印的这个信息啊。对不对,这是没传路径,那如果要传的路径呢,比如说在这里面啊,我也传一个什么呢,比如说当前目录。还是uplo,这我自己传的th Hu MB下边就是2020 OK搞定,那这个时候你再来看啊。
13:02
再来刷新确定你看是不是upload tb2020了,看到了吧,那同样这里边我是不是也创建了2020。看到了吧,哎,这就是传与不传的两种结果啊,好了,那这块完事以后,嗯。Pass pass。那就是不管你有没有,我最终都要给你做一个拼接路径的效果来刷新一下啊,这块是没问题,那如果没传,我们看我最后这个斜线能不能拼接上来啊,那我再把这个路径信息还得再删一下。把这个再删掉,也就是说当我不传这个路径的时候,那我们再来看。总理。确定。你看是不是也没问题,是不是当前目录upload下面的斜线了,哎,好,那搞定了以后,接下来我们开始去处理我的这个名称啊,获取它的原名,那原名的话是不是就通过base name来获取了,对吧,叫做Dollar,呃,Name吧,等于base name获取这个路径,也就是s RC image获取它的名称,那我们再来打印这个image。
14:13
Name。好,再来刷新确定,你看我的名称是不是拿到了,那咱说了前面是要加什么,加上这个S杠什么什么什么的,对吧,那也就是说在这里边我是不是就要加上p re,不对,是Dollar了P。S杠对吧,然后连接连接谁呢?连接上我的刀宽度,再连上一个下划线,再连上一个刀高度。再留下一个下划线。好连它啊,也就是S-100杠一百一百就这么一个名称,那你看我缩列土的名称是不是就已经有了,你看叫什么S杠一百一百杠A,也就是我们所有带数列图的是不是都是前面加了S前缀,然后你数列的是多大尺寸的,是不是就都有了。哎,都在这张图片名上做表示好了,那既然他已经有了,有了以后我们开始进行什么进行保存吧。
15:04
那进行保存的时候,我们要用什么,是不是也要用,你比如说你是image的,那我就gpeg。对吧,如果你是PNG的,我就是PNG,如果你GIF我就GIF,所以这里边我是不是还需要这个对应的函数,那image啊叫image-UC它。直接调用吧。啊,但是这个函数还没做对吧?所以在这里边我们得去做一下啊,那Dollar,一面积杠UNC括号啊不是括号是等于,等于什么呢?等于一面积连上SUF它的后缀对吧?好了,连完以后呢,接下来这里边它有两个参数,第一个什么我的新资源,然后你要给它保存到哪儿呢?是不是保存到pass里边。对吧,但是pass里边你叫什么名,你得有吧,那pass里边叫Dollar name呗。到了内蒙是不是这么连的?哎,那OK,那完事完事以后。他会给我返回一个结果,对吧,我再想想我们要不要返回他的这些信息呢?
16:03
他的这些信息可以啊,我们返回到这个信息吧。来,然后接下来呢,就是保存图片,保存图片我们做完了啊。把他俩放到一起了啊。然后这块是我们的保存图片。好,然后我们释放资源,释放资源那把谁呢?把这个Dollar image,这是第一个资源,还有image。This way,把这个Dollar new image,我们第二个也放到这里边,好,这两个都完事了,那最后我们返回结果,返回结果的时候我需要返回什么东西,我是不是把这个路径返回出去就可以了。哎,所以这里边,那你看啊,这个函数也就是以积GIF是这样的函数,它还有什么样的返回值啊,以面积g PEG来,你看返回什么东西,是不是返回一个布尔值对吧?来返回布尔值,那就相当于如果文件保存成功,我是不是就可以返回这个名称对吧?那也就是在这里边。
17:04
如果到了result,我就直接R瑞什么呀,这个。Dollar e啊好,我就直接return Dollar pass.dollar name是不是数列图名称返回了,哎,否则呢,我是不就I return一个false FA就可以了。Fair OK,那现在是不是就搞定了,那么搞定以后咱们来看一下,在这里边我能不能进行说缩略了啊,当前我就用这个图片了,然后什么都没传对不对,然后他会给我返回一个结果。啊,VR-DP打印这个DOLLAR2,然后我们现在再来重新刷新,确定OK,搞定了,有这么一张图片,那咱们来看在我当前这个目录下边啊,Uplo的这个下边,因为我没传嘛,咱们就往这里面来了,是不是有个S100对吧,那你看它的比例多少,尺寸是不是100乘100了,对吧,打开以后是不是这样的。看明白了吧,哎,那OK,这是我们指没有指定路径,默认它传的是这个通缉对吧,如果我指定的路径呢,比如说在这里边啊。
18:09
CTRLCCTRLV把这个组织掉了啊,第一个组掉了,第二个我来指定路径,这个路径我重新换了啊,叫做当前目录upload upload下边我来个2020 2020,下边来个12 12里面再来个12好。这么去写,那么这个时候我们再来刷新,看一眼来走你。确定是不是也给我返回这么信息对吧?哎,这是它相对于我当前文件的这么一个路径吧,那这个时候你再来看。呃,这里面来是不是有个2020啊,打开二零是不是有十二十二里面是不是还有十二十二在里边,是不是采取这张图片名称是不是也可以了,哎,这就是咱们这个图片缩放的功能就已经OK了啊好了,那这个图片缩放功能OK,我们一样把这个注释我们来补一下啊。嗯。这两个注释掉了啊,在这里边。谢谢。
19:02
行好。UB叫什么图片缩放功能对吧,然后I的PA参数一什么呀,是要。缩放图片的路径。LPR。可选。站住是吧,缩略图缩略图保存的路径啊。如果设置,如果没有设置,则跟什么跟当前。当前需要需。缩放的图片在同一目录中。目录中是不是这个意思,哎哎,艾P'M3这个也一样,可选参数缩放的。宽度啊,默认。100。And PM也是也一样,可选参数就是缩放的高度也要默认100。还有PM。
20:04
第五个是我们这个可选。参数叫做。缩放图片。啊,前缀。便对啊好了,返回值呢,返回值返回缩放后的这个。径信息加名称。名称对吧,哎,如果失败返回。False OK啊,这就是咱们的这个图片缩放的功能是不是实现了?哎,好了,那现在来看,我们已经把基本的功能实现了,剩下的我们开始干嘛,是不是就要去写这个相册的逻辑了?哎,那OK,那这节课我们到这里。
我来说两句