답변 3개 / 댓글 9개
채택된 답변
+20 포인트
이미지온로드 이벤트로 한번 빼 보셈. 자바스크립트라기 보다는 html 에서 직접 해도 됩니다.
<img style="display:none" src="이미지경로" onload="outerHTML='<span>' + naturalWidth + 'x' + naturalHeight + '</span>'">
답변에 대한 댓글 4개
아~~죄송합니다~~ 아래 처럼하니 출력이 되네요~~해보지 않은 것은 아닙니다~~잘 못해서 출력이 제대로 안되거지요~~`다시 한번 감사드립니다~~<img style="display:none" src="https://dawayo.net/gallery/20241111_130150.jpg" onload="outerHTML='<span>' + naturalWidth + 'x' + naturalHeight + '</span>'">~디렉토리 내의 모든 이미지의 크기를 출력하고자해서 제대로 출력이 안되었습니다
이 문제는 이미지의 EXIF 정보를 기반으로 출력된 이미지 크기가
회전 정보에 의해 잘못된 방향으로 출력되는 경우일 것입니다.
EXIF 데이터에는 이미지의 회전 방향이 저장되어 있으며,
PHP의 exif_read_data 함수를 사용하면 이 데이터를 읽어올 수 있을 것입니다.
이미지의 회전 방향을 확인한 후,
실제 이미지의 가로 및 세로 크기를 올바르게 계산하여 출력해야 합니다.
*EXIF 정보를 이용해 이미지 크기를 올바르게 출력하려면
다음과 같은 예시 코드를 추가로 사용할 수 있음
Copy
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 정보에서 회전이 필요한 경우 가로와 세로 크기를 교환하여 올바른 크기를 계산.
- 아래 예제 코드를 이미지 크기 출력 로직에 통합하여 문제를 해결할 수 있음.
Copy
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();
}
답변에 대한 댓글 4개
https://blog.naver.com/questzz/220247230285
간단하게는 해당 함수를 참고하시면 될 거 같습니다.
답변을 작성하려면 로그인이 필요합니다.