php 미리 보기 그림 생 성 백 변 채 우기(등비 미리 보기 그림)

사이트 에 사진 을 올 린 후에 미리 보기 그림 을 만 드 는 것 은 매우 자주 사용 하 는 기능 일 것 이다.일반적으로 사이트 가 아름 답 게 보이 기 위해 미리 보기 그림 은 같은 사이즈 일 것 이다.예 를 들 어 최근 에 필자 가 만 든 사이트,미리 보기 그림 규격 에 대한 요 구 는 모두 160 이다.×120。그러나 올 린 그림 의 비율 과 미리 보기 그림 이 일치 하지 않 으 면 바로 크기 를 조정 하면 그림 이 변형 되 어 체험 이 좋 지 않 을 것 이다.그래서 필 자 는 절충 하 는 방법 을 생각 했다.바로 축소 한 후에 흰 변 을 첨가 하 는 방법 이다.
원본 그림,사 이 즈 는 600 입 니 다.×366:
최종 생 성 효과 도:
코드 가 상대 적 으로 길 어 요.다음은 간단하게 생각 을 말씀 드 리 겠 습 니 다.
먼저 원본 그림 을 비례 에 따라 미리 보기 그림 을 만 들 고 너비 가 160 보다 크 지 않 으 며 높이 가 120 보다 크 지 않 습 니 다.예 를 들 어 위의 그림 에서 선생님 은 160 이 됩 니 다.×98 의 미리 보기 그림.새로 만 들 기 160×120 개의 흰색 배경 그림 은 이전 단계 에 생 성 된 미리 보기 그림 을 이 그림 에 가운데 놓 으 면 OK 입 니 다.최종 코드 는 다음 과 같 습 니 다.

// , ,
$src_path = '1.jpg';
//
$width = 160;
//
$height = 120;

//
$src_image = imagecreatefromstring(file_get_contents($src_path));
$src_width = imagesx($src_image);
$src_height = imagesy($src_image);

//
$tmp_image_width = 0;
$tmp_image_height = 0;
if ($src_width / $src_height >= $width / $height) {
    $tmp_image_width = $width;
    $tmp_image_height = round($tmp_image_width * $src_height / $src_width);
} else {
    $tmp_image_height = $height;
    $tmp_image_width = round($tmp_image_height * $src_width / $src_height);
}

$tmpImage = imagecreatetruecolor($tmp_image_width, $tmp_image_height);
imagecopyresampled($tmpImage, $src_image, 0, 0, 0, 0, $tmp_image_width, $tmp_image_height, $src_width, $src_height);

//
$final_image = imagecreatetruecolor($width, $height);
$color = imagecolorallocate($final_image, 255, 255, 255);
imagefill($final_image, 0, 0, $color);

$x = round(($width - $tmp_image_width) / 2);
$y = round(($height - $tmp_image_height) / 2);

imagecopy($final_image, $tmpImage, $x, $y, 0, 0, $tmp_image_width, $tmp_image_height);

//
header('Content-Type: image/jpeg');
imagejpeg($final_image);

좋은 웹페이지 즐겨찾기