이미지를 작은 이미지로 변환한 문자열을 mysql에 저장하는 방법을 소개합니다.

큰 이미지를 저장하기에는 무리가 있으나 작은 이미지로 변환한 문자열을 mysql 에 저장하면 속도면에서 오히려 더 빠를 수 있습니다.

먼저 mysql 테이블을 만듭니다.


 CREATE TABLE `images` (

  `id` int(10) NOT NULL,
  `type` char(4) NOT NULL,
  `thumbs` blob NOT NULL
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;


  <?php

 function Thumbnail_String($string$user_width=86$user_height=null)
{
    
ob_start();
    
ob_flush();
    
flush();

    
$im imagecreatefromstring$string );
    
$orig_width imagesx($im);
    
$orig_height imagesy($im);
    if(
$orig_width >= $user_width)
    {
        if(
strlen($user_height) === 0)
        {
          
$user_height = @round($orig_height*($user_width/$orig_width));
        }
    }
    else
    {
        
$user_width $orig_width;
        
$user_height $orig_height;
    }
    
$im_new imagecreatetruecolor$user_width$user_height );

    
imagecopyresampled($im_new$im0000 $user_width$user_height$orig_width$orig_height);
    
imagepng($im_new);
    
imagedestroy($im);
    
imagedestroy($im_new);

    
$data ob_get_contents();
    
ob_end_clean();
    return 
$data;
}
// 이미지를 sql에 저장하기
$file file_get_contents($_FILES['userfile']['tmp_name']);
unlink($_FILES['userfile']['tmp_name']);

$data Thumbnail_String($file50);
mysqli_query($link "insert into from tbname VALUES('1', 'png', '".$data."');");



// sql에 저장된 이미지를 불러오기
$result mysqli_query($link"select thumbs from tbname WHERE id=1;");
$row mysqli_fetch_array($resultMYSQLI_NUM);
echo 
"<img src='data:image/gif;base64, ".base64_encode($row[0])."'>";
?>

신고

base64 문자열을 작은 이미지로 리사이즈한 문자열로 출력할 수 있습니다.


이렇게 하면 썸네일 이미지를 mysql에 저장할 수 있고, 또 리사이즈한 이미지를 변수에 담아 원하는 곳에 출력할 수 있습니다.


 <?php

 function Thumbnail_String($string$user_width=86$user_height=null)
{
    
ob_start();
    
ob_flush();
    
flush();
    
$im imagecreatefromstring$string );
    
$orig_width imagesx($im);
    
$orig_height imagesy($im);
    if(
$orig_width >= $user_width)
    {
        if(
strlen($user_height) === 0)
        {
          
$user_height=@round($orig_height*($user_width/$orig_width));
        }
    }
    else
    {
        
$user_width $orig_width;
        
$user_height $orig_height;
    }
    
$im_new imagecreatetruecolor$user_width$user_height );
    
imagecopyresampled($im_new$im0000,  $user_width$user_height$orig_width$orig_height);
    
imagepng($im_new);
    
imagedestroy($im);
    
imagedestroy($im_new);

    
$data ob_get_contents();
    
ob_end_clean();
    return 
$data;
}
$data64 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl'
        
'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr'
        
'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r'
        
'8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg==';
$data Thumbnail_String(base64_decode($data64), 50);
echo 
"<img src='data:image/gif;base64, ".base64_encode($data)."'>";
?>

결과:

 


신고