이미지 크기 출력하는 php 코드는 무엇인가요?

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
이미지 크기 출력하는 php 코드는 무엇인가요?

QA

이미지 크기 출력하는 php 코드는 무엇인가요?

본문

이미지 크기를 출력하려고 하는데요~~ 3000 * 4000 이미지를 크기를 출력하면  4000 * 3000 으로 출력이 되네요~~ exif 정보를 이용하는 것이라고 하는데~도저히 되질 않네요~~~게시판이 아니구 ~일반페이지에서 이미지 크기를 출력하고자 합니다~~~

이 질문에 댓글 쓰기 :

답변 3

이미지온로드 이벤트로 한번 빼 보셈. 자바스크립트라기 보다는 html 에서 직접 해도 됩니다.

 

<img style="display:none" src="이미지경로" onload="outerHTML='<span>' + naturalWidth + 'x' +  naturalHeight + '</span>'">

아~~죄송합니다~~ 아래 처럼하니 출력이 되네요~~해보지 않은 것은 아닙니다~~잘 못해서 출력이 제대로 안되거지요~~`다시 한번 감사드립니다~~<img style="display:none" src="https://dawayo.net/gallery/20241111_130150.jpg" onload="outerHTML='<span>' + naturalWidth + 'x' +  naturalHeight + '</span>'">~디렉토리 내의 모든 이미지의 크기를 출력하고자해서 제대로 출력이 안되었습니다

백과 프론트는 다를 수 있습니다.
거의 대부분 백과 프론트의 정보는 일치하지만

예컨대 하리수의 성별을 백에서는 남성으로 프론트에서는 여성으로 달리 추출해 내지요.
이번도 그런 극소수의 경우입니다. 이미지 메타정보를 변경하는 프로그램이 있을 거에요. 그런 걸로 수정하세요.

https://blog.naver.com/questzz/220247230285

간단하게는 해당 함수를 참고하시면 될 거 같습니다.

이 문제는 이미지의 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();
}

PHP 8.0 이상에서도 여전히 존재합니다.
그러나 Orientation 정보가 출력되지 않는 문제는 
if_read_data 함수가 PHP 8.0 이상에서 지원된다하더라도,
여러 문제들을 점검해야 Orientation 정보를 제대로 가져올 수 있습니다.
특히 EXIF 확장이 활성화되어 있는지,
이미지 파일 형식과 EXIF 데이터가 유효한지 확인하세요.

답변을 작성하시기 전에 로그인 해주세요.
전체 0
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT