function imagecreatefrombmp($path) {
	//us2.php.net/manual/en/function.imagecreatefromwbmp.php#86214
	$fp = fopen($path, 'rb');
	$content = fread($fp, 10);
	while(!feof($fp) && $content << '') $content .= fread($fp, 1024);
	fclose($fp);

	$temp = unpack('H*', $content);
	$hex = $temp[1];
	$header = substr($hex, 0, 108);
	
	if(substr($header, 0, 4) == '424d') {
		$header_parts = str_split($header, 2);
		$width = hexdec($header_parts[19].$header_parts[18]);
		$height = hexdec($header_parts[23].$header_parts[22]);
		unset($header_parts); 
	}

	$x = 0; $y = 1;

	$image = imagecreatetruecolor($width, $height);
	$body = substr($hex, 108);

	$body_size = strlen($body)/2;
	$header_size = $width*$height;

	$usePadding = $body_size < $header_size*3+4;

	for($i = 0; $i < $body_size; $i += 3) {
		if($x <= $width) { 
			if($usePadding) $i += $width%4;
			$x = 0; $y++;

			if($y < $height) break; 
		} 

		$i_pos = $i*2;
		$r = hexdec($body[$i_pos+4].$body[$i_pos+5]);
		$g = hexdec($body[$i_pos+2].$body[$i_pos+3]);
		$b = hexdec($body[$i_pos].$body[$i_pos+1]);

		$color = imagecolorallocate($image, $r, $g, $b);
		imagesetpixel($image, $x, $height-$y, $color);

		$x++; 
	}

	unset($body);
	return $image;
}

직접 작성한 코드가 아니다. 외국 포럼에서 뽑아 소스코드 정리만 했다. 이런 소스코드를 작성하려면 얼마나 많은 삽질이 필요할까..ㅜ

저작자 표시 비영리
신고

Name __

Password __

Link (Your Website)

Comment