雨が降っているような表現ができるライブラリ「rainyday.js」を使ってみます。
使い方
下記からダウンロードできます。
GitHub – maroslaw/rainyday.js: Simulating raindrops falling on a window
ダウンロード後、rainyday.jsを読み込みます。
<script src="rainyday.js"></script>
HTML
<div id="wrapper"> <img src="" width="960" id="photo"> </div>
JavaScript
var photo = document.getElementById('photo');
// 画像読み込み後の処理
photo.onload = function() {
	// rainyday.jsの設定
	var engine = new RainyDay({
		image: photo // 雨を降らせる画像の指定
	});
	// 雨粒の設定
	engine.rain([
		[3, 3, 1] // サイズが3~6の雨粒を1滴追加する
	], 100); // 0.1秒ごとに雨粒追加を実行
};
// 画像のsrcを指定
photo.src = 'img.jpg';
オプション・メソッド
How to useに記載されているものからいくつか試してみます。
JavaScript
var photo = document.getElementById('photo');
var wrapper = document.getElementById('wrapper');
photo.onload = function() {
	var engine = new RainyDay({
		image: photo,
		parentElement: wrapper,
		blur: 12,
		opacity: 0.7
	});
	// 雨粒の設定
	engine.rain([
		[1, 2, 8000]
	], 500);
	engine.rain([
		[3, 3, 0.88],
		[5, 5, 0.9],
		[6, 2, 1]
	], 100);
};
photo.src = 'img.jpg';
| image | 雨を降らせる画像の指定。必須。 | 
|---|---|
| parentElement | canvasの親要素を指定。デフォルトはbody。 | 
| blur | 雨によるぼかしの量を指定。デフォルトは10。 | 
| opacity | 雨粒の不透明度の指定。デフォルトは1。 | 
| rain([[min, range, count], … ], ms); | 雨粒の指定。 msミリ秒ごとに、min~(min+range)の範囲のサイズで、countの数だけ雨粒が追加される。 | 
【参考サイト】

コメントが承認されるまで時間がかかります。