티스토리 뷰

확장자가 없어도 이미지가 보여지는건 데이터가 있다는 것이므로 바이너리 데이터를 보여주는 형식으로 처리

// 이미지 추출 
preg_match_all("/<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i", $row['content'], $out5); 

for($i = 0; $i < count($out5[0]); $i++){

 // base64 데이터 가져오기
 $imgBase64 = getImageData($out5[1][$i]);

 // mime type 가져오기
 $imgData = getHeader($out5[1][$i]);

 $row['content'] = str_replace($out5[0][$i], '<img src="data:'.$imgData.';base64,'.$imgBase64.'" />', $row['content']);
}

 

 

 

//함수

// 이미지 데이터를 가져와서 base64 인코딩으로 변환 후 반환
function getImageData($imgLink){

 $curl = curl_init();

 curl_setopt($curl, CURLOPT_URL, $imgLink);

 // referer는 적당히 연구해서 속일 것. 비워도 되는 경우도 있음.
 curl_setopt($curl, CURLOPT_REFERER, '');

 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

 $img = curl_exec($curl);

 curl_close($curl);

 return base64_encode($img);   

}

 


// 이미지 링크에서 이미지의 확장자를 읽어  mime type 형태로 반환
function getHeader($img){

    $extArr = array(

        'jpg' => 'image/jpg',

        'gif' => 'image/gif',

        'bmp' => 'image/bmp',

        'png' => 'image/png'

    );

    $ext = strtolower(substr($img, strrpos($img, '.')+1));

    return $extArr[$ext];

}

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함