存档

文章标签 ‘screenshot’

自动为 TEM 照片添加标尺

2009年7月7日
Comments Off

经常要做透射电镜,每次拿回结果的时候都要手工为其添加标尺(就是在图片的某一角落添加一条一定长度的直线,一般是一厘米,然后上面标注上此段长度的线条代表的实际长度,就和地图的比例尺一样),开始我使用gimp标注,一次两次倒还凑活,太多了就受不了了,于是乎决定写一个脚本来自动处理这种事(机械的活就该机器来干嘛,机器的活总是人来干的话,那咱智慧生物岂不白长了个脑袋不是?!)
挽上袖子开工,思路如下:

1) 根据放大倍数算出一定长度(这里是一厘米)代表的实际长度,以此来产生用于标注的文本。算法根据电镜老师的说明:请将图片在PHOTOSHOP中打开,将图片的尺寸改为8.1cmx5.4cm,此时,在10万倍的情况下,1cm代表100nm
2) 将原图缩小到一定尺寸(8.1cmx5.4cm)
3) 在原图上面右下角贴上文字(就是1中算出的实际尺寸)
4) 把一厘米的长度棒贴到文字下面(长度棒是事先画好的一条棒子),完工!

先是尝试了将图片缩小到8.1cmx5.4cm,结果发现图片很小,很奇怪,不过不论gimp/ps做出来的都是这个德性, 因此将图片缩小为8.1*3cmx5.4*3cm的大小,相应的长度棒也增大三倍,这下产生出来的图片就大而清晰了,呵呵 从此就不必再干这种体力活咯,来个图代表一下先:

发件人 xiooli

下面是代码(bar.tiff要自己画,长度是三厘米,这个是gimp上设的三厘米,切忌用尺子在屏幕上量出三厘米哦):

 1  #!/bin/bash
 2  #Author: xiooli <xioooli[at]yahoo.com.cn, http://joolix.com>

 3  #Licence: GPLv3
 4  #Version: 20090707
 5  #注:三个参数(第三个可选),分别是放大倍数(单位是万倍)、原文件和输出文件
 6
 7  Mag="$1"
 8  [ "$1" = "-h" ] && echo "$0 放大倍数(万倍) 原文件 输出文件(可选)" && exit

 9  Infile="$2"
10  Outfile="${3:-"fixed-`basename $2`"}"

11  #标尺图像文件的路径
12  Barpic=$HOME/.Share/bar.tiff
13  Text="`bc -l<<<"10/$Mag*100"`"

14  Text="${Text%.*} nm"
15  #文字位置
16  TextX=560

17  TextY=410
18  #文字与标尺的间距
19  Interval=9
20  Font=Times-New-Roman-Normal

21  FontSize=24
22  
23  [ ! "${#@}" -ge 2 ] && echo "参数个数不对。" && exit

24  
25  [ -f "$Infile" ] && \
26  convert -resize 689×460 "$Infile" "/dev/shm/resize-tmp.tiff"

27  
28  [ -f "/dev/shm/resize-tmp.tiff" ] && \
29  drawtext="convert -font \"$Font\" -fill black -pointsize $FontSize  -draw ‘text  ${TextX},${TextY} \"$Text\"\"/dev/shm/resize-tmp.tiff\"  \"/dev/shm/addtext-tmp.tiff\"" && eval $drawtext

30
31  [ -f "/dev/shm/addtext-tmp.tiff" -a -f "$Barpic" ] && \
32  composite -geometry "+${TextX}+$(($TextY+$Interval))" "$Barpic" \

33  "/dev/shm/addtext-tmp.tiff" "$Outfile"

Script , ,

天气墙纸脚本:wallther

2009年5月11日

RT
点击下载 wallther 脚本及 icon 素材
看LinuxToy时发现了一个天气墙纸的程序,貌似依赖不少的Gnome组件,很不方便,于是就萌生了用bash脚本写一个相同功能的脚本的想法,经过几个小时的奋战终于搞定了,呵呵,主要是convert等处理图片的软件用得不熟。
这个东东可以自动去获取天气信息(你甚至都不用管城市代码,当然可能有些地方会不准),然后根据获得的天气找到对应的图标,然后将图标和天气情况的文字(是否绘制文字信息可选)合成到背景图片中去,然后将这个合成的图片设置为壁纸。
初次使用需要配置一些东西,主要就是字体,因为我用的雅黑你可能没有。
这里有一张生成的图片大家可以感受一下:

发件人 xiooli

代码见下:

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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#!/bin/bash
#Copyright (c) 2009 xiooli (xioooli[at]yahoo.com.cn, http://joolix.com)
#Name wallther
#License: GPLv3
#Version 20090511
 
#此脚本需要安装 w3m 和 imagemagick
#城市代码,留空可自动检测(自动检测不一定精确)
#城市代码可在 http://weather.265.com 上查询,是个5位的数字
#受bones7456和wenbob的天气脚本启发。
 
#这儿是城市代码,须自己改,未赋值会自动查询。
Wid=56294
#天气图标的位置
Icondir="`dirname $0`/icons"
#欲用作背景的图片
BackPic="$Icondir/background.jpg"
#最终输出的图片位置
OutPic="/dev/shm/wallpapertmp.png"
#壁纸路径(此为 OutPic 的副本)
Wallpaper="/dev/shm/wallpaper.png"
#是否在图片上绘制文字天气信息,yes/no
DrawText="yes"
#文字的字体,若不是中文字体则中文可能无法正常显示
Font="/usr/share/fonts/winfonts/msyh.ttf"
#文字的大小
FontSize=24
#文字的颜色
TxtColor="white"
#文字信息绘制的位置
TxtPosX=700
TxtPosY=350
#隔多大距离绘制下一行(此距离包括本行的宽度)
TxtYIncr=35
#天气图标绘制的位置
PicGeometry="+650+80"
#壁纸更换的时间间隔(默认 30 分钟)
ChangeTime="30m"
 
WeatherCN=("晴" "多云" "阴" "雨" "雷阵雨" "雾" "雪" "雨夹雪")
WeatherEN=("sun" "suncloud" "cloud" "rain" "storm" "fog" "snow" "snowrain")
 
GET_WEATHER() {
	[ -z "${Wid}" ] && \
	if [ -f "/dev/shm/city" ] ;then
		Wid="$(cat /dev/shm/city)"
	else
		Wid="`wget -q -O - 'http://www.265.com/lookupcity'|awk -F "'" '{print $2}'`"
		echo ${Wid}>/dev/shm/city
	fi
	[ ! -z "${Wid}" ] && WeatherTxt="`w3m -dump "http://wap.weather.com.cn/wap/${Wid}/h24/"`"
}
 
GEN_DRAW_TEXT() {
	[ -z "${WeatherTxt}" ] && GET_WEATHER
	if [ -z "${WeatherTxt}" ]; then
		echo "未能获取天气 :("
	else
		echo "${WeatherTxt}"|sed -n "4p"|sed 's/\ .*$//'
		echo "${WeatherTxt}"|sed -n "5,9p"
	fi \
	|sed "s/^.*$/-draw \\\'text POSITION \\\"&\\\"\\\'/" \
	|while read line; do 
		echo "$line"|sed "s/POSITION/$TxtPosX,$TxtPosY/"
		((TxtPosY+=$TxtYIncr))
	done|tr "\n" " "
}
 
GEN_WEATHER_ICON() {
	local tmp weathercn index 
	[ -z "${WeatherTxt}" ] && GET_WEATHER
	[ -z "${WeatherTxt}" ] || tmp="`echo "${WeatherTxt}"|sed -n "5p"`"
	j=0; k=0
	for i in ${WeatherCN[@]}; do
		[ "${tmp//$i}" != "$tmp" ] && weathercn[$j]="$i" && index[$j]="$k" && ((j++))
		((k++))
	done
	[ "${#weathercn[@]}" -eq 0 ] && Weather[0]="unknown"
	[ "${#weathercn[@]}" -eq 1 ] && Weather[0]="${WeatherEN[${index[0]}]}"
	[ "${#weathercn[@]}" -eq 2 ] && \
	if [ "`echo $tmp|grep "${weathercn[0]}转"`" ];then
		Weather[0]="${WeatherEN[${index[0]}]}"
		Weather[1]="${WeatherEN[${index[1]}]}"
	else
		Weather[0]="${WeatherEN[${index[1]}]}"
		Weather[1]="${WeatherEN[${index[0]}]}"
	fi
	[ "${#weathercn[@]}" -eq 3 ] && \
	{
		Weather[0]="${WeatherEN[${index[0]}]}"
		Weather[1]="${WeatherEN[${index[2]}]}"
	}
	if [ "${#Weather[@]}" -ge 2 ]; then
	   convert +append "$Icondir/${Weather[0]}.png" "$Icondir/${Weather[1]}.png" /dev/shm/weathericon.png
	else
	   ln -sf "$Icondir/${Weather[0]}.png" /dev/shm/weathericon.png
	fi
}
 
GEN_WALLPAPWE() {
	GEN_WEATHER_ICON
	[ -f $BackPic ] || BackPic="$Icondir/background.jpg"
	if [ "$DrawText" = "yes" ]; then
		draw="convert -font \"$Font\" -fill $TxtColor -pointsize $FontSize `GEN_DRAW_TEXT` \"$BackPic\" \"/dev/shm/backpictmp.png\""
		eval "$draw"
		composite -geometry "$PicGeometry" /dev/shm/weathericon.png /dev/shm/backpictmp.png "$OutPic"
	else
		composite -geometry "$PicGeometry" /dev/shm/weathericon.png "$BackPic" "$OutPic"	
	fi
}
 
while :; do
	GET_WEATHER
	[ "${WeatherTxt}" != "$tmp" ] && GEN_WALLPAPWE && tmp="${WeatherTxt}"
	if [ -f "$OutPic" ];then
		mv "$OutPic" "$Wallpaper"
		gconftool-2 -s /desktop/gnome/background/picture_filename --type=string "$Wallpaper"
	fi
	sleep "$ChangeTime"
done

Script , ,

翻译了 Bilbo Blogger

2009年4月16日

RT

一个kde下的博客发布程序,从LinuxToy里面看见的,结果没有中文的,花了几个小时将其翻译了一下,不知道怎么反馈给官方。大家要用的话到这里下载po源文件和编译好的mo文件。
点此下载
刚刚去launchpad看了下有个jobinson翻译了大概30%几,不知道怎么联系他,哎。

ps:翻译了这个我自己却不能用,因为垃圾四川电信不知道出了什么鬼问题导致我要用tor才能访问更新自己的博客。

中文界面截图一张:

发件人 xiooli

Other

真正可以利用迅雷资源的下载脚本!

2009年4月14日

RT
首先感谢krash同学的furl,其实这个程序才是主角,furl可以从迅雷的服务器上找资源,我只是将其返回的资源交给aria2c分段从不同服务器上下载而已,脚本源码见下面:
需要furl和aria2c
其中furl可以去http://forum.ubuntu.org.cn/viewtopic.php?f=73&t=195557下载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash
#version 20090414
#Auther xiooli <xioooli@yahoo.com.cn>
#Have fun :)
 
Furl=./furl
Savedir=$HOME/Download;[ -d "$Savedir" ] || mkdir -p "$Savedir"
Initurl="$1"
if [ "$Initurl" ]; then
	>/dev/shm/urllist
	eval "$Furl \"$Initurl\" 2>/dev/null" >/dev/shm/urllist
	Count="`cat /dev/shm/urllist|wc -l`"
	Urls="`cat /dev/shm/urllist|while read url; do
		echo -n $tmp" "\\\"$url\\\"
	done`"
else
	echo "请输入一个下载链接!"
	exit
fi
echo "总共找到 $Count 个资源,开始下载..."
[ "$Urls" -a "`which aria2c 2>/dev/null`" ] && \
eval "aria2c -c -s "$Count" -d \"$Savedir\" $Urls"

速度很不错哦,我下一个东西能上700多k呢,嘿嘿

发件人 xiooli

ps:开托儿来更新自己的blog真不爽。。。

Script , ,

Prism:将网络应用转为桌面程序

2009年3月31日

RT
真是好东东阿,不知怎么的我安装了这个的ff插件,最后做出来的不能用,还是单独安装了一个才行的,Arch的PKGBUILD在这里:http://aur.archlinux.org/packages.php?ID=23111。我自己弄了个巨鲸音乐网的音乐盒 :) ,很不错哦,跟酷我音乐盒有一拼呢(url是http://www.top100.cn/audition/flplayer.html),google音乐的url没能提取出来。看看效果吧:

发件人 xiooli

Other ,

Tuz,linux的新logo

2009年3月21日

Linus 大神为 2.6.29 版的 Linux kernel 选择了一个新的 logo(见下图)。该 logo 是 2009 linux.conf.au 峰会的吉祥物,名为 Tuz。Linus 选用 Tuz,意在支持拯救 Tasmanian devil(袋獾)这种濒临灭绝的动物。
ps: 图片是袋獾戴了个鸟嘴假扮企鹅。

发件人 xiooli

Other

几张lrcdis的运行靓照

2009年3月13日

RT
第一张是骨头在gnome下弄的,第二张是我在kde4.2下弄的。

发件人 xiooli
发件人 xiooli

Lrcdis

Scrot截图脚本

2009年1月15日
Comments Off

scort很不错,功能强劲,但是由于其是cli软件,于是被很多人无视了,其实只有简单的几句脚本,然后做成一个启动器放面板上面就会很方便的。

下面是我平常使用的scrot脚本,作了个启动器在panel上面,使用时只需点击一下启动器,然后用鼠标点击窗口就会截图该窗口,点击桌面就全屏截图,画矩形就截矩形部分,截出来的文件保存在自己设置的目录里面,保存的文件名是以scrot-xx.png的形式,xx是数字,当保存目录下有其他的 scrot-xx.png的时候xx会自动加一。

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
#Name scrot.sh
#Author xiooli <xioooli[at]yahoo.com.cn,http://joolix.com>
#Licence GPL
 
savedir=~/桌面/
prefix="scrot-"
num="`ls "$savedir"|grep "$prefix"|tail -n1|sed "s/"$prefix"//g;s/\..*$//g;s/^0//"`"
num=${num:--1}
((num++))
num="`printf "%.2d" ${num}`"
eval "scrot "${prefix}${num}.png" -bs -e 'mv \$f "$savedir"'"

来个示范截图:

发件人 xiooli
发件人 xiooli

Script , , ,

Joolix 8.04靓照1-基本系统

2009年1月1日

桌面
scrot-00.png
应用程序
scrot-01.png
系统
scrot-02.png
输入法&终端
scrot-03.png
文件管理器
scrot-04.png

Joolix ,

wp博客开张咯^*^

2008年12月26日

张罗了好久的wp博客终于开张了,呵呵,以后就在此开山立派,聊天灌水了。
此系本博的处女文,甚有纪念意义,决定截图留念,也顺便考察下google picasa的外联行不行,霍霍,上图:

发件人 wp-images

再来一张:

发件人 wp-images

测试代码高亮:

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
#!/bin/bash
#name:   win2k_boot
#author: xiooli { xioooli[at]yahoo.com.cn } 
prg() {
   for ((i=0;i<=50;i++));do
      for ((j=0;j<=$i;j+=1));do
         printf ">"
      done
      for ((k=0;k<=50-$j;k+=1));do
         printf "="
      done
      printf "\r"
      sleep 0.1
   done
   echo ""
}
 
echo "Microsoft Windows 2000 [Version 5.00.2195]
 版权所有 1985-2000 Microsoft Corp.
"
put_one_by_one() {
   for w in `echo $1|sed 's/./& /g'`;do
      echo -n $w
      sleep $2
   done
   echo -e "\n"
}
main() {
   echo -n "c:\>; "
   sleep 1
   put_one_by_one $1 0.2
   sleep 2
   case $1 in
      "x!!不开机就砸了你!!")
         sleep 2
         echo -e "             Loading Windows 2000...\n"
         sleep 1
         prg
         exit
         ;;
      *)
         put_one_by_one "'$1'不是内部命令或外部命令,也不是可运行的程序或批处理文件。" 0.1
         ;;
   esac
}
 
for i in "开机" "快开机" "你xx快开机" "x!!不开机就砸了你!!";do
    main $i
done

Other , ,