memo.xight.org

日々のメモ

PHPで画像にWatermark 加工

Summary

二つの画像を合成し,Watermark加工が行なえる.

Source

function emboss($pic1,$patt) {
	header("Content-type: image/png");
	
	$source=imagecreatefromjpeg($pic1);    // Source
	$pattern=imagecreatefromjpeg($patt);    // pattern
	list($width, $height) = getimagesize($pic1);
	list($widthpatt, $heightpatt) = getimagesize($patt);
	$new_width=$width;
	$new_height=$width/$widthpatt*$heightpatt;
	if($new_height>$height){
		$offset=intval(($new_height-$height)/2);
	}
	elseif($new_height<$height){
		$offset=intval(($new_height-$height)/2);
	}
	else{
		$offset=0;
	}
	
	$image_p = imagecreatetruecolor($new_width, $new_height);
	$pattern = imagecreatefromjpeg($patt);
	imagecopyresampled($image_p, $pattern, 0, 0, 0, 0, $new_width, $new_height, $widthpatt, $heightpatt);
	
	$im = imagecreatetruecolor($width, $height);   
	
	for($y=0; $y < $height; $y++) {
		for($x=0; $x < $width; $x++) {
			$colors=imagecolorsforindex($source, imagecolorat($source, $x,$y));
			$pattern_color=imagecolorsforindex($image_p, imagecolorat($image_p, $x,($y+$offset)));
			//changes brightness depending on luminance
			if(($y+$offset+1)>0 &&($y+$offset)<($new_height-1)){
				$brightness=abs(($pattern_color['red']*50/255)-50);
				if($pattern_color['red']<150){
					$change=true;}
				else{
					$change=false;
					$tally=0;
				}
				if($change&&$tally<2){
					$highlight=1.8;
					$tally++;
				}
				else{
					$highlight=1;
				}
				$brightness = $brightness * $highlight;
			}
			else{
				$brightness=0;
			}
			$r=(($colors['red']+$brightness)>255)? 255 : ($colors['red']+$brightness);
			$g=(($colors['green']+$brightness)>255)? 255 : ($colors['green']+$brightness);
			$b=(($colors['blue']+$brightness)>255)? 255 : ($colors['blue']+$brightness);
			
			$test=imagecolorallocate($im, $r,$g,$b);
			imagesetpixel($im,$x, $y, $test);
		}
	}
	imagepng($im);
	imagedestroy($im);
}
emboss("me.jpg","patternsq.jpg");
//emboss("magic800.jpg","patternsq.jpg");
//emboss("crop.jpg","patternsq.jpg");


<img src="emboss.php" />


Reference

http://www.ckdog.co.uk/php/imgtests/emboss.phps

Watermarking JPEG and PNG Images with PHP and GD2
http://koivi.com/php-gd-image-watermark/

via

Merge images / add logo - PHP
http://www.thescripts.com/forum/thread121386.html

人生オワタの大冒険 for FLASH

Reference

人生オワタ\(^o^)/の大冒険 for FLASH
http://blog53.fc2.com/k/king75/file/owata.html

人生オワタ\(^o^)/の大冒険 攻略スレ
http://jbbs.livedoor.jp/bbs/read.cgi/game/35247/1168145446/

王の巣窟
http://king75.blog53.fc2.com/

ぬるいゲーム時事ブログ 人生オワタ\(^o^)/のFlashゲームが更新されてパワーアップ
http://nuruigamejijiblog.blog76.fc2.com/blog-entry-206.html

via

[を] 人生オワタ\(^o^)/の大冒険
http://chalow.net/2007-01-18-3.html

qliner hotkeys - クールなホットキーソフトウェア

Summary

Windows用のホットキーソフトウェア.
Windows キーを利用したショートカットキーを管理できる.

これは手放せなくなりそう.

Reference

qliner hotkeys - The keyboard is back...
http://www.qliner.com/hotkeys/default.htm

SourceForge.net: qliner hotkeys
http://sourceforge.net/projects/qlinerhotkeys

via

MOONGIFT - qliner hotkeys - クールなホットキー
http://oss.moongift.jp/intro/i-3205.html

Google Calendar に天気予報のアイコンを表示する

Reference

livedoor 天気情報 Google Calendar アイコン版 (非公式)
http://gimite.ddo.jp/rails/weather/

livedoor 天気情報 - Weather Hacks - iCal天気
http://weather.livedoor.com/weather_hacks/ical.html

via

風待ち日記 - Googleカレンダーに天気情報を表示させる
http://d.hatena.ne.jp/saito-kazuo/20060922/p1

2007年の運勢 - 最強運芸能人決定戦

Summary

あなたの組み合わせ:てんびん 座 ウマ 年 O 型
あなたと同じ組み合わせの有名人は、中山エミリ です。
あなたの順位は576位中 142 位です。
恋愛のライバルが出現するが、意外な人が手を差し伸べてくれそうです。


Reference

最強運芸能人決定戦。
http://www.fujitv.co.jp/saikyo2007/

2006年の運勢[2006-01-01-2]
2005年の運勢[2005-01-03-1]
2004年の運勢[2004-01-05-6]