이미지 크기 출력하는 php 코드는 무엇인가요?
본문
이미지 크기를 출력하려고 하는데요~~ 3000 * 4000 이미지를 크기를 출력하면 4000 * 3000 으로 출력이 되네요~~ exif 정보를 이용하는 것이라고 하는데~도저히 되질 않네요~~~게시판이 아니구 ~일반페이지에서 이미지 크기를 출력하고자 합니다~~~
답변 3
이미지온로드 이벤트로 한번 빼 보셈. 자바스크립트라기 보다는 html 에서 직접 해도 됩니다.
<img style="display:none" src="이미지경로" onload="outerHTML='<span>' + naturalWidth + 'x' + naturalHeight + '</span>'">
이 문제는 이미지의 EXIF 정보를 기반으로 출력된 이미지 크기가
회전 정보에 의해 잘못된 방향으로 출력되는 경우일 것입니다.
EXIF 데이터에는 이미지의 회전 방향이 저장되어 있으며,
PHP의 exif_read_data 함수를 사용하면 이 데이터를 읽어올 수 있을 것입니다.
이미지의 회전 방향을 확인한 후,
실제 이미지의 가로 및 세로 크기를 올바르게 계산하여 출력해야 합니다.
*EXIF 정보를 이용해 이미지 크기를 올바르게 출력하려면
다음과 같은 예시 코드를 추가로 사용할 수 있음
function get_image_dimensions($image_path) {
$exif = @exif_read_data($image_path);
if ($exif && isset($exif['Orientation'])) {
$orientation = $exif['Orientation'];
list($width, $height) = getimagesize($image_path);
if (in_array($orientation, [5, 6, 7, 8])) {
// Swap width and height for rotated images
return [$height, $width];
}
}
// Default case
return getimagesize($image_path);
}
$image_path = 'path/to/your/image.jpg';
list($width, $height) = get_image_dimensions($image_path);
echo "Image dimensions: {$width} x {$height}";
*해결 방안:
- PHP의 exif_read_data 함수를 사용하여 이미지의 회전 방향 정보를 확인.
- getimagesize로 이미지를 읽고,
EXIF 정보에서 회전이 필요한 경우 가로와 세로 크기를 교환하여 올바른 크기를 계산.
- 아래 예제 코드를 이미지 크기 출력 로직에 통합하여 문제를 해결할 수 있음.
function get_correct_image_size($image_path) {
// 이미지 파일이 존재하는지 확인
if (!file_exists($image_path)) {
throw new Exception("이미지 파일이 존재하지 않습니다: {$image_path}");
}
// EXIF 데이터를 읽음
$exif = exif_read_data($image_path, 0, true);
if ($exif && isset($exif['Orientation'])) {
list($width, $height) = getimagesize($image_path);
$orientation = $exif['Orientation'];
// 회전된 이미지의 경우 가로와 세로 교환
if (in_array($orientation, [5, 6, 7, 8])) {
return [$height, $width];
}
return [$width, $height];
}
// 기본 이미지 크기 반환
$size = getimagesize($image_path);
if ($size === false) {
throw new Exception("이미지 크기를 읽을 수 없습니다: {$image_path}");
}
return [$size[0], $size[1]];
}
// 테스트 실행
try {
$image_path = 'path/to/your/image.jpg'; // 이미지 경로
list($width, $height) = get_correct_image_size($image_path);
echo "올바른 이미지 크기: {$width} x {$height}";
} catch (Exception $e) {
echo "오류 발생: " . $e->getMessage();
}
답변을 작성하시기 전에 로그인 해주세요.