从去年12.12开始,工作日都会从单位的落地窗向外拍一张照片,有点每日打卡的意思。weekday 是一天不落的,weekend 不是每次都到单位,落了几次。

想法来自上学的时候,有同学在同一个地方,拍北洋广场的一年四季,做成 gif,非常漂亮。自己就也想试一下,于是就动手了。

干货开始。

工具:shell、ImageMagick

1、照片采集

手机拍摄,上传网盘。

2、照片整理

 # 准备目录
workDir=gifs
mkdir $workDir
mkdir -p $workDir/imgs
mkdir -p $workDir/minImgs # 准备文件
cd $workDir
cp ~/Downloads/aaa/*.jpg imgs/

3、文件名处理

这个是一个特殊的情况,iPhone 拍出来的照片,传到网盘后,文件名是“2014-12-31 084045.jpg”,中间有个空格,在处理的时候有点麻烦,需要把空格处理掉。

 cd imgs
for f in `find *.jpg | tr ' ' '_'`
do
mv "`echo $f | tr '_' ' '`" $f
done

4、图片加水印

这里我想的是右上角加上日期的标签,内容可以从文件名里面截取:

水印的坐标需要根据图片的实际情况去设置,对 ImageMagick 用的不多,还没有掌握相对坐标的方式(如果有的话)。

 # 当前目录 $workDir/imgs

 for f in `ls . | grep jpg`
do
echo "current img: "$f
wm_file=${f::}.jpg
wm_text=${f::}
echo "water mark: "$wm_text
convert -fill white -pointsize -draw "text 2700,160'$wm_text'" $f $wm_file > ../log
rm $f
done

5、图片压缩

原始的图片太大,可以适当压缩下:

DPI 设置为400,压缩成原来的25%

 # 当前目录 $wordDir/imgs

 for f in `ls . | grep jpg`
do
convert -density -geometry % $f ../minImgs/$f
done cd $workDir

6、合成 gif

这里 imageMagick 默认的一个 tick 是1/100s,这里50个 tick,就是50/100,就是半秒。可以根据自己的需求,多试几次。

 # 当前目录 $workDir

 convert -delay  minImg/*.jpg res.gif 2>>log

最后,上结果。

(超过10M 了 T T)

http://pan.baidu.com/s/1sjuizQP

附全部代码:

 #!/bin/sh
if [[ $# != ]]
then
echo "Usage: sh makeGif.sh srcDir"
exit
fi SRCDIR=$
WORKDIR=gifs
mkdir $WORKDIR
mkdir -p $WORKDIR/imgs
mkdir -p $WORKDIR/minImgs # 准备文件
cd $WORKDIR
cp $SRCDIR/*.jpg imgs/ cd imgs
for f in `find *.jpg | tr ' ' '_'`
do
mv "`echo $f | tr '_' ' '`" $f
done # 当前目录 $WORKDIR/imgs for f in `ls . | grep jpg`
do
echo "current img: "$f
wm_file=${f:0:10}.jpg
wm_text=${f:0:10}
echo "water mark: "$wm_text
convert -fill white -pointsize 96 -draw "text 2700,160'$wm_text'" $f $wm_file 2> ../log
rm $f
done # 当前目录 $wordDir/imgs for f in `ls . | grep jpg`
do
convert -density 400 -geometry 25% $f ../minImgs/$f.jpg
done cd .. # 当前目录 $WORKDIR convert -delay 50 minImgs/*.jpg res.gif 2>>log

凝结时光:ImageMagick 制作 gif的更多相关文章

  1. 使用imageMagick 制作圆角矩形和图片加水印

    制作圆角矩形好图片水印都是图片合成的操作 composite -gravity southeast mask175.png  src.jpg  dest.jpg -gravity southeast ...

  2. ImageMagick

    http://blog.csdn.net/lan861698789/article/details/7738383 1.官网 http://www.imagemagick.org/script/ind ...

  3. jffs2文件系统制作

    内核:                linux-3.0 uboot:             2010.09 开发板:             fl2440 交叉编译器:         2011. ...

  4. 时光煮雨 Unity3D实现2D人物动画② Unity2D 动画系统&资源效率

    系列目录 [Unity3D基础]让物体动起来①--基于UGUI的鼠标点击移动 [Unity3D基础]让物体动起来②--UGUI鼠标点击逐帧移动 时光煮雨 Unity3D让物体动起来③—UGUI DoT ...

  5. 时光煮雨 Unity3D实现2D人物动画① UGUI&Native2D序列帧动画

    系列目录 [Unity3D基础]让物体动起来①--基于UGUI的鼠标点击移动 [Unity3D基础]让物体动起来②--UGUI鼠标点击逐帧移动 时光煮雨 Unity3D让物体动起来③—UGUI DoT ...

  6. 使用css3伪元素制作时间轴并且实现鼠标选中高亮效果

    利用css3来制作时间轴的知识要点:伪元素,以及如何在伪元素上添加锚伪类 1)::before 在元素之前添加内容. 2)::after 在元素之后添加内容. 提示:亦可写成 :before :aft ...

  7. ImageMagick的使用

    关于ImageMagick ImageMagick (TM) 是一个免费的创建.编辑.合成图片的软件.它可以读取.转换.写入多种格式的图片.图片切割.颜色替换.各种效果的应用,图片的旋转.组合,文本, ...

  8. 【ImageMagick】ImageMagick命令行工具

    [关于ImageMagick] [命令行工具] [源码安装] [二进位发布版本] [资源配置文件] [相关下载] ImageMagick命令行工具 [ convert | identify | mog ...

  9. [置顶] 修改Android开机画面之rle制作

    第一个动画: Bootloader开机使用的图片是linux.bmp,长高分别是120*120,色度是32,所以可以拿相同格式图片替换,进行编译烧写即可. 第二个图片:内核logo 这个修改方式,我在 ...

随机推荐

  1. [Unity3D]Unity3D游戏开发之Logo渐入渐出效果的实现

    ---------------------------------------------------------------------------------------------------- ...

  2. SpringMVC + Spring 3.2.14 + Hibernate 3.6.10

    SpringMVC + Spring 3.2.14 + Hibernate 3.6.10 集成详解 注:此文档只说明简单的框架集成,各个框架的高级特性未涉及,刚刚接触框架的新人可能需要参考其他资料. ...

  3. Java代码优化(转)

    前言 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用, ...

  4. Cocos2d-3x:vs2012项目开关android项目需要注意的地方

    http://www.cocoachina.com/bbs/read.php?tid=194668 先依照这个文章导入库到vs项目. 在vs项目的sceen类的里加入 #include "c ...

  5. linux_删除空文件(大小等于0的文件)的方法

    1: 查看 find . -name "*" -type f -size 0c 2:删除 find . -name "*" -type f -size 0c | ...

  6. [译文]c# /.Net 技巧: ToDictionary() and ToList()

    前言: 有两个简单好用的LINQ扩展方法 ToDictionary() 和ToList(),你可能知道或不知道,但是它的的确确可以简化查询转化为集合的任务: 简介: LINQ和延迟执行 据你所认识的L ...

  7. Bag标签之中的一个行代码实行中文分词实例1

    例1: 分词(返回以逗号隔开的词组,gap=",") <bagid=pPage act=2words name=words gap=",">我喜欢黄 ...

  8. root运行/media可运行文件权限不够,chmod改动权限无效

    http://blog.csdn.net/pipisorry/article/details/39649699 问题: 我想运行media目录下自己写的某个程序,但无法运行? 1. 于是我以root的 ...

  9. hadoop编程小技巧(5)---自己定义输入文件格式类InputFormat

    Hadoop代码測试环境:Hadoop2.4 应用:在对数据须要进行一定条件的过滤和简单处理的时候能够使用自己定义输入文件格式类. Hadoop内置的输入文件格式类有: 1)FileInputForm ...

  10. JS工具库之Lodash

    破狼 JavaScript工具库之Lodash 2015-04-11 16:08 by 破狼, 235 阅读, 2 评论, 收藏, 编辑 你还在为JavaScript中的数据转换.匹配.查找等烦恼吗? ...