맛집 여행 캠핑 일상 생활

PHP 이미지 주소 노출없이 브라우저에 표시 본문

LAMP

PHP 이미지 주소 노출없이 브라우저에 표시

영은파더♥ 2016. 9. 2. 09:20

PHP 이미지 주소 노출없이 브라우저에 표시


이미지파일을 주소 노출없이 브라우저에 표시하는 방법이다.

<img src="data:image/jpeg;base64,raw데이터"> 이런 방식이다.

function image_view1($img_path) {

$IMAGE_PATH = $img_path;

list($IMAGE_W, $IMAGE_H, $IMAGE_TYPE) = getimagesize($IMAGE_PATH);

switch ($IMAGE_TYPE) {

case 1: $image = imagecreatefromgif($IMAGE_PATH); break;

case 2: $image = imagecreatefromjpeg($IMAGE_PATH);  break;

case 3: $image = imagecreatefrompng($IMAGE_PATH); break;

case 15: $image = imagecreatefromwbmp($IMAGE_PATH); break;

default: return '';

}

ob_start();

imagejpeg( $image, NULL, 100 );

imagedestroy( $image );

$iraw = ob_get_clean();

echo "<img src='data:image/jpeg;base64,".base64_encode($iraw)."'>";

}


function image_view2($img_path) {

$IMAGE_PATH = $img_path;

$IMAGE_SIZE = getimagesize($IMAGE_PATH);

$fp = fopen($IMAGE_PATH,"rb");

while(!feof($fp)) {

$iraw .= fread($fp,4096);

}

fclose($fp);

echo "<img src='data:".$IMAGE_SIZE['mime'].";base64,".base64_encode($iraw)."'>";

}

이렇게 나온 브라우저에서 이미지는 이미지 주소복사를 하면 이미지 데이터가 복사가 된다.

이미지 원본을 원하면 image_view2 함수를 사용하면 된다.


function image_view3($img_path) {

$IMAGE_PATH = $img_path;

$IMAGE_SIZE = getimagesize($IMAGE_PATH);

$fp = fopen($IMAGE_PATH,"rb");

if($fp) {

$FILENAME = 'download.'.strtolower(substr($IMAGE_PATH,strlen($IMAGE_PATH)-3,3));

header("Content-Type: ".$IMAGE_SIZE['mime']);

header("Content-Disposition:inline;filename=$FILENAME");

header("Content-Length: ".filesize($IMAGE_PATH));

fpassthru($fp);

}

}


function image_view4($img_path) {

$IMAGE_PATH = $img_path;

$IMAGE_SIZE = getimagesize($IMAGE_PATH);

if($IMAGE_SIZE) {

$FILENAME = 'download.'.strtolower(substr($IMAGE_PATH,strlen($IMAGE_PATH)-3,3));

header("Content-Type: ".$IMAGE_SIZE['mime']);

header("Content-Disposition:inline;filename=$FILENAME");

header("Content-Length: ".filesize($IMAGE_PATH));

readfile($IMAGE_PATH);

}

}


Trackback : | Comments :