컴퓨터잡담

php 이미지 저장 및 이미지크기를 줄여 저장기술 소스

by 디케 posted Oct 17, 2009
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄



getimagesize

Example #1 getimagesize() and MIME types

<?php
$size 
getimagesize($filename);
$fp fopen($filename"rb");
if (
$size && $fp) {
    
header("Content-type: {$size['mime']}");
    
fpassthru($fp);
    exit;
} else {
    
// error
}
?>

Example #2 getimagesize() example

<?php
list($width$height$type$attr) = getimagesize("img/flag.jpg");
echo 
"<img src="./\"img/flag.jpg\" $attr alt=\"getimagesize() example\" />";
?>

Example #3 getimagesize (URL)

<?php
$size 
getimagesize("http://www.example.com/gifs/logo.gif");

// if the file name has space in it, encode it properly
$size getimagesize("http://www.example.com/gifs/lo%20go.gif");

?>

Example #4 getimagesize() returning IPTC

<?php
$size 
getimagesize("testimg.jpg"$info);
if (isset(
$info["APP13"])) {
    
$iptc iptcparse($info["APP13"]);
    
var_dump($iptc);
}
?>


imagecopyresized

Example #1 Resizing an image

This example will display the image at half size.

<?php
// File and new size
$filename 'test.jpg';
$percent 0.5;

// Content type
header('Content-type: image/jpeg');

// Get new sizes
list($width$height) = getimagesize($filename);
$newwidth $width $percent;
$newheight $height $percent;

// Load
$thumb imagecreatetruecolor($newwidth$newheight);
$source imagecreatefromjpeg($filename);

// Resize
imagecopyresized($thumb$source0000$newwidth$newheight$width$height);

// Output
imagejpeg($thumb);
?>


<?php 
//use this line if you get the error message of using too much memory (strip '//') 
//ini_set ( "memory_limit", "48M"); 

$target_width 800
$target_height 600

if (
ob_get_level() == 0ob_start(); 
if (
$handle opendir('files/')) { 
  while (
false !== ($file readdir($handle))) { 
    if (
$file != "." && $file != "..") { 
      
$destination_path './files/'
      
$target_path $destination_path basename($file); 

      
$extension pathinfo($target_path); 
      
$allowed_ext "jpg, gif, png, bmp, jpeg, JPG"
      
$extension $extension[extension]; 
      
$allowed_paths explode(", "$allowed_ext); 
      
$ok 0
      for(
$i 0$i count($allowed_paths); $i++) { 
        if (
$allowed_paths[$i] == "$extension") { 
          
$ok "1"
        } 
      } 

      if (
$ok == "1") { 

        if(
$extension == "jpg" || $extension == "jpeg" || $extension == "JPG"){ 
          
$tmp_image=imagecreatefromjpeg($target_path); 
        } 

        if(
$extension == "png") { 
          
$tmp_image=imagecreatefrompng($target_path); 
        } 

        if(
$extension == "gif") { 
          
$tmp_image=imagecreatefromgif($target_path); 
        } 

        
$width imagesx($tmp_image); 
        
$height imagesy($tmp_image); 

        
//calculate the image ratio 
        
$imgratio = ($width $height); 

        if (
$imgratio>1) { 
          
$new_width $target_width
          
$new_height = ($target_width $imgratio); 
        } else { 
          
$new_height $target_height
          
$new_width = ($target_height $imgratio); 
        } 

        
$new_image imagecreatetruecolor($new_width,$new_height); 
        
ImageCopyResized($new_image$tmp_image,0,0,0,0$new_width$new_height$width$height); 
        
//Grab new image 
        
imagejpeg($new_image$target_path); 
        
$image_buffer ob_get_contents(); 
        
ImageDestroy($new_image); 
        
ImageDestroy($tmp_image); 
        echo 
" $file resized to $new_width x $new_height <br> \n"
        echo 
str_pad('',4096)."\n";  
        
ob_flush(); 
        
flush(); 
      } 
    } 
  } 
  
closedir($handle); 
  echo 
"Done."
  
ob_end_flush(); 

?>