Android一键压缩Git提交的图片

2 篇文章 0 订阅
1 篇文章 0 订阅

Android一键压缩Git提交的图片

版权声明:

本公众号发布的所有文章,均属于原创,版权归本公众号所有。

允许有条件转载,转载请附带底部二维码。

前言

Android中很多资源都是图片资源,而使用设计工具直接导出的图片,都是未经压缩过的图片。如果直接导入到项目中使用,会导致最终打包的apk变大。所以一般都会要求将图片进行压缩,然后使用。实际上,要是每次替换图片资源都要进行压缩,如此反复其实还是很麻烦的。本文就如何快捷的压缩Android项目内的图片,进行一个思路上的解决方案,最后也会提供一个可以使用的demo解决方案。

一般如何压缩?

现在压缩图片,一般要求不高的话,可以直接使用TinyPng这个网站去做图片的压缩,这个网站是公司的设计师告诉我的,听说在设计圈被用的很频繁。

TinyPng的官网:https://tinypng.com/

TinyPng其实用起来很简单,如果只是一次性对一批图片进行压缩,直接打开网站,然后把需要压缩的图片拖进去就可以了。

Tiny_dome.png

可以看到,TinyPng的压缩率,还是很高的。

但是这样实际上还是摆脱不了人手工去操作,如果替换图片比较频繁的话,必然是要把这个操作重复多次的。既然如此,可以考虑用脚本来完成这些操作。

TinyPng的APIs

看了一下TinyPng的网站,其实他们是提供了对应的压缩API接口的。API接口还很全面,基本上常用的脚本语言,都可以去实现,并且还提供了例子,这一点非常的贴心。

tiny_aps.png

TinyPng提供的接口,需要在网站进行注册,并且每月提供500次的压缩免费份额,这样其实用在工作中也足够了。

Tiny_free.png

在TinyPng中注册之后,就可以获取到和注册用户对应的唯一的一个Key,这个是这个用户的唯一标识,需要记录下来,后面会用到。

需要重复造轮子吗?

Android的项目现在是使用Gradle构建的,找了一下没有现有的对应Groovy实现。那么是不是需要自己重新写一个呢?思前想后觉得还是用已经有的轮子直接使用,会比较省时省力。

正好发现TinyPng还支持Node.js的接口,而Node.js下提供了各种构建工具,其中gulp就有对TinyPng对应的支持,经过简单的配置就可以直接使用。

这里简单介绍一下接下来需要使用的技术:

  1. Node.js:它是一个基于Chrome V8引擎的 JavaScript的运行环境。
  2. NPM:它是一个Node.js的包管理工具。
  3. gulp:它是Node.js项目的构建工具,类似于Gradle在Android项目的作用。

举个实际的例子

既然已经找到了解决方案,就实际操作一下。

首先呢,需要安装Node.js的运行环境,这个在官网直接下载安装即可。没什么技术含量,无脑下一步。

其次需要借助npm安装gulp和gulp-tinify,为了方便的区分出那些是git的改动,还需要安装gulp-git。

安装执行命令:npm install -g gulp gulp-git gulp-tinify

tiny_install.png

使用这个命令,npm会自动将这些所需要的工具安装到全局。

gulp-git和gulp-tinify的使用,这里不做讲解,可以自行查看文档:

然后需要在Android项目的根目录下,新建一个gulpfile.js文件,来编写gulp的构建脚本。

Tiny_key.png

这个脚本会使用git state命令查看当前被修改的命令,Add和Modify都包含在内。然后取出这些文件之后,通过TinyPng去压缩,然后直接使用压缩后的图片,替换到本地对应目录下的图片。

实际使用的过程中,只需要执行 gulp tinify 即可。

Tiny_use.jpg

在执行完图片压缩之后,就可以正常的提交改动了。

有什么改进的方案

这里提供的方案只是提供了一个思路,并且也只是随手的一个实现,并不是最优解。那么有什么可以想到的优化方案呢?

可以想到的:

  • 方案一:使用Git钩子来触发,当提交代码的时候,检测改动,在提交之前直接压缩再提交,做到用户无感知。
  • 方案二:既然已经引用了gulp-git,是可以在压缩完成之后,继续脚本执行commit和push命令。就可以完成后续操作。

结语

操作本身如果会被重复多次,就可以将它流程化或者脚本化,这样简化了重复工作,也不会那么枯燥到无聊。

公众号二维码.jpg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值