00:01
大家好,我是南哥,今天呢我教大家使用一个非常简单的,非常好用的一款图片处理框架,是由Google开源的Sam,这个工具呢非常的好用,我们可以通过很简单的API就可以实现对图片的一些常规操作,比如修改图片的尺寸。等比例缩放图片,让图片进行旋转,包括裁剪图片,以及呢,还可以给添给这个图片呢,添加水印。这些操作的话呢,代码量都非常的少,所以呢,目前这个框架可以说是最好用的图片处理框架之一。好了,废话少说,接下来南哥就直接开始写代码,教大家怎么去使用,那么首先第一步我们需要去引入。Some的依赖。我们就需要去引入他的依赖。上不了。
01:00
OK。好,引入之后的话,接下来我们就可以操作了啊,直接使用它的各种API。那么这边的话,我是预先呢准备好了一张图片,这张图片的话呢,是我B站的一个截图,我们就以这张图片呢,呃为例呢,去对它进行操作,好来看这些API怎么去使用。那么首先我们来看这个图片的裁剪,我们来看它的修改,它的尺寸吧,先来看修改尺寸,所以这边我先来写一个方法。Change,好,那首先的话呢,我们需要啊,把这张原图片的路径呢,我们写过来。把原图片的路径呢拿过来,一会儿呢,读取这个路径就可以拿到这张图片了,123.pa,好,怎么去使用呢?非常的简单啊,我们直接去调用some elses的一个静态方法。
02:08
调用它这个偶方法。然后我们把这个图片路径传进来,好传进来之后我们接下来就可以继续去调方法,它是一个方法链的方式,可以连缀着去调,我们要修改它的尺寸,所以直接调size,那么size里边需要传两个参数,很显然就是它的宽和高。这是咱们的原图啊,现在的话呢,比如说我把它把它的尺寸呢,改成1000乘600,所以说这边船1000后面是高度600 OK,这样的话就改完了,改完之后的话,我们需要把这张,把这张图片呢啊修改完成之后,这张图片呢重新保存起来,怎么重新保存呢?我们直接调to feel方法就可以了,这边也是需要去传一个新的路径,所以我们来定义一个to feel等于。这就是我们修改之后的图片,它的一个保存路径,我们就要copy OK,直接把这个图feel传进来,OK了,这边把异常处理一下,这边就直接抛出来了,好给它加一个T注解,直接运用,然后这边我们再写一个注释,这是啊,修改尺寸,好,我们直接来运行,看一看能不能把这个尺寸改掉啊,现在大家可以看到这边没有copy这张图片,那么现在我们来运行。
03:36
好,运行成功没有报错。这时候大家看到copy这张图片是不是已经生成了,打开看一下,哎,它的尺寸是不是1000乘600了,这是原图,这个是不是1000乘600的一个图片,OK,所以说非常的简单啊,直接掉三个方法。就把这个功能呢,我们就实现了,来记一下,这是修改图片尺寸,OK,那修改完成尺寸之后,我们再来看,呃,对于图片的一个等比例缩放吧,等比例缩放,比例缩放的一个操作。
04:15
跟这儿一样的,还是这样一个连缀的方式去调,再来写一个测试方法,巴布克。我直接把异常泡一下。下一个太子注解,然后再来写个注释,这是。比。好,同样的还是调somewhere else的,呃,方法我们先把原图传进来,传进来之后呢,我们直接调scale方法,这个里边呢,传的就是它的百分比。它是按照百分比去进行缩放的,比如说我们要缩放到80%,怎么办呢?缩放到80%,那么这边我们直接传0.8就可以了,80%是不是就0.8 OK,缩放完成之后,是不是接下来去调这个to feel方法把它存起来啊,所以大家可以看到这两个方法非常的类似啊,都是去调整这个图片的一个大小。
05:21
但是呢,这个size方法需要你去指定具体的参数值,它的宽度,它的高度,具体的数值你要指定出来,但是这个scale方法的话,你只需要给他传一个比例,它就会自动的去完成这样一个缩放,好我们来运行。OK,成功了啊,这是刚才我们size之后的它的1000乘600的一个图片,那现在我们缩放80%之后,重新打开这张图片,你看。对吧,是不是这时候肯定是80%,这是原图,这是80%。OK吧,所以说也是非常的简单。
06:01
所以他关于其他的一个操作啊,都是类似于这样一个方法,调用连缀的去调各个方法。好,缩放完成之后呢,我们再来看它的图片旋转,我们也可以让图片呢进行一个旋转。我来写一个测试方法,Root。图片旋转还是some else,第2OF few传进来好,然后这边我们在调这个root的方法之前呢,首先要调scar方法,先要去进行一个比例的一个缩放啊,这边必须要调,你不调的话,他就报错一会儿给大家去演示,如果说你不希望去,呃,进行图片的一个。
07:05
呃,等比例缩放,我就希望对原图呢进行一个修改,怎么办呢?那就穿衣就行了,穿衣的话呢,是不是相当于对它的原来的尺寸是按照1 : 1的比例去进行处理的,那是不是就相当于没有处理对不对?OK啊,Scale调完之后呢,再来调root的方法,这里边儿的话呢,是一个度数,比如说我现在让它旋转180度。旋转完成之后呢,再调to f把它存起来。好,我们来运行。OK,没问题啊,我们这时候再来打开这张图片。你看是不是等比例,它旋转了180度,颠倒过来了。对吧。这边大家注意啊,一定要去调这个scale方法,你不调的话呢。不掉,我们来运行,它就会报错。看到没有报错了啊,所以呢,一定要调这个方法。
08:03
好,这是图片旋转,接下来我们来看图片的裁剪。图片裁剪,图片裁剪跟这个等比例缩放和尺寸不一样。尺寸和等比缩放的话,都是保证这张图片它的内容不变。对不对,它的全部内容不变,我们只是说把它的尺寸改变了,然后这个裁剪的话呢,它就会把图片的一部分取出来啊,所以还是不一样的,我们来看怎么去裁剪啊。图片裁剪好。还是somewhere else.of few,对,同样这边也是先调这个scar方法啊,一定要去调,不调它就报错。比如说我们现在传一,就是对这个图片的尺寸不做这个处理,直接去裁剪,接下来我们去调source region source region source region的话,这边需要传三个参数,哪三个呢?因为你现在是要对图片进行裁剪嘛,首先是起始的位置,它的中心原点在哪,然后的话呢,是你裁剪的。
09:26
这个图片的一个尺寸啊,所以呢,首先我们要确定它的位置,位置怎么确定呢?这边有一个positions positions。对吧,这是一些枚举啊,这是一些枚举,大家可以看一下这个代码啊,这是一个枚举positions positions是一个枚举,这里边是它的一些选项,那有有什么呢?比如说这个center center是不是居中。对吧,那这个bottom left是不是左下,这个top left是不是左上,对吧?Bottom right是不是。就是下边的右边,然后bottom center是下边的中间,这个是中间左边,中间的右边,上边的中间,上面的右边对不对?一共有这么几个方位啊,比如说我们先居中去裁剪,我裁剪一个600乘600的一个图片,好,裁剪完成之后直接调图feel图feel。
10:18
我们来运行,看结果。OK,没问题啊,大家打开看这张图片。哎,你看。是不是居中,然后裁剪?裁剪600乘600这么一张图片。对不对,比如我再换一个位置啊,比如说我裁剪左下,左下就是bottom left。左下,那么是不是就相当于是从这儿开始裁,那应该是大概是这么一个。大概就是这么一个一个图片,一个正方形的图片啊,我们来看结果对不对。OK,搞定了,来打开看一下图片。
11:01
没问题吧,是不是左下角。左下角裁了一个正方形600乘600的。OK,好,所以这个呢是图片的裁剪。图片裁剪,我们在调它的region之前呢,也一定要去调这个scar这个方法啊好,这是图片三点,那接下来我们再来看这个添加水印,添加水印的这样一个操作,那添加水印的话呢,首先你得准备好这个水印的图片。这边的话我准备了一张图片啊,南哥教你学Java这几个字,我现在把它作为水印添加到我们的图片里边。好。那么这边我们来写一个方法,那首先的话,我把这个水印的图片路径给它引入water mark。等于what mark?好,这边我们来写方法。Water mark添加水印。
12:17
怎么添加呢?非常的简单啊,Some elses off,首先是原图对不对,然后这边呢,Scale这边都都得调,Scar不调都报错啊,这几个方法大家需要去注意,好,接下来我们去调这个水印的方法叫water mark,对吧?Water mark的话,这里边参数比较多啊,首先第一个是它的位置,水印添加到哪一块。那比如说我现在给他添加到这个。右下角对吧,右下角position.bottom bottom right。我把水印加到这儿。加到这个位置啊。好,首先是它的一个水印的位置,然后第二个什么呢?第二个就是我们水印的图片,我们用这个image io.read把这张图片读进来,这边你有一个few,把图片的路径写进来,Watermark,好。
13:10
然后的话还要设置什么呢?还要设置这个水印的它的透明度,比如说我透明度是50%,那就设置一个0.50.5就可以了,50%的一个透明度,OK,所以说这个是水印的位置,水印的资源,然后这个水印的透明度50%,好,写完之后呢,直接to feel,把它保存起来,好非常的简单。我们来测试啊。直接运行。好,成功了,我们来看有没有水印。没问题吧,水印是不是加到这儿,而且是50%的透明度。OK吧,非常的简单,那再比如说我再给它改一个,我把水印加到左上角,那就是改这个top left就可以了啊,然后透明度你也可以改,然后图片的这个资源你也可以改,改成你自己的都没问题来运行。
14:22
你看是不是加到左上角了,OK,这就是添加水印那个操作啊。好,所以说这边给大家演示了几个方法,比如说添加水印,图片的裁剪,以及图片旋转等比例缩放,还有修改尺寸这些对于图片处理的一个啊,我们非常常用的一些功能,对吧,我们使用这个工具呢,可以非常简单的方便的就可以实现这些功能,OK。
我来说两句