2009-11-13 4 views
0

이미지가 PNG, GIF, TIFF 및 JPG인지 확인하고 축소 이미지를 만든 다음 엄지 파일에 저장하려면 어떻게해야합니까?PHP를 사용하여 이미지 확장을 확인하고 보는 방법은 무엇입니까?

지금까지 JPEG 이미지를 확인하고 저장할 수 있습니다.

다음은 아래 코드입니다.

<?php 

//Name you want to save your file as 
$save = 'members/3/images/thumbs/thumb-pic.jpg'; 

$file = 'members/3/images/pic.jpg'; 
echo "Creating file: $save"; 


list($width, $height) = getimagesize($file) ; 

if ($width >= 180){ 
    $modwidth = 180; 
    $modheight = ((180.0/$width) * $height); 
} else { 
    $modwidth = $width; 
    $modheight = $height; 
} 

$tn = imagecreatetruecolor($modwidth, $modheight) ; 
$image = imagecreatefromjpeg($file) ; 
imagecopyresampled($tn, $image, 0, 0, 0, 0, $modwidth, $modheight, $width, $height) ; 

// Here we are saving the .jpg, you can make this gif or png if you want 
//the file name is set above, and the quality is set to 100% 
imagejpeg($tn, $save, 100) ; 
?> 

답변

1

나는 imagemagick 모듈, 특히 Imagick::identifyImage() 메서드를 사용할 것입니다. 아래처럼 배열을 반환합니다 - 형식의 키를 확인하십시오.

Array 
(
    [imageName] => /some/path/image.jpg 
    [format] => JPEG (Joint Photographic Experts Group JFIF format) 
    [geometry] => Array 
     (
      [width] => 90 
      [height] => 90 
     ) 

    [type] => TrueColor 
    [colorSpace] => RGB 
    [resolution] => Array 
     (
      [x] => 300 
      [y] => 300 
     ) 

    [units] => PixelsPerInch 
    [fileSize] => 1.88672kb 
    [compression] => JPEG 
    [signature] => 9a6dc8f604f97d0d691c0286176ddf992e188f0bebba98494b2146ee2d7118da 
) 
+0

내 코드에 어떻게 추가합니까? – ImAGe

+0

미리보기를 생성하는 것만 큼 간단하게 imagick을 사용하는 것은 거의 스케치 적이 지요 ... 내가 간 적이있는 호스트가 많지 않습니다. – brianreavis

2

여기에 해당 imagecreatefrom... 기능에 각 형식을 지정하는 연관 배열을 사용하여, 그것을 하나 개의 방법 :

$handlers = array(
    'jpg' => 'imagecreatefromjpeg', 
    'jpeg' => 'imagecreatefromjpeg', 
    'png' => 'imagecreatefrompng', 
    'gif' => 'imagecreatefromgif' 
); 

$extension = strtolower(substr($file, strrpos($file, '.')+1)); 
if ($handler = $handlers[$extension]){ 
    $image = $handler($file); 
    //do the rest of your thumbnail stuff here 
}else{ 
    //throw an 'invalid image' error 
} 
0

당신은 마임 기능을 사용할 수 있습니다. 시도해보십시오. brianreavis가 답변했지만 이미지 파일의 확장자에 의존하지 않고 exif_imagetype 기능을 사용하려고합니다. echo mime_content_type('php.gif') :

0

$filetypeinfo = exif_imagetype($file); 
switch($filetypeinfo){ 
    case 1: 
    $extension = 'gif'; 
    break; 
    case 2: 
    $extension = 'jpg'; 
    break; 
    case 3: 
    $extension = 'png'; 
    break; 
} 
1

대부분이 다운되었습니다.

exif_image type을 사용하거나 pathinfo($image_path, PATHINFO_EXTENSION)을 사용하여 파일 형식을 가져옵니다. 그런 다음 변수에 저장하십시오 (예 : $ type).

그런 다음 switch 문을 사용하여 filetype의 변수를 스위치 비교로 사용하여 적절한 imagefrom * function (imagefromjpeg 페이지의 "참조 정보"목록을 확인하십시오)을 실행하십시오.

마지막으로 같은 기본 switch 문을 사용하여 이미지 * (imagepng 등 [imagejpeg 페이지에서도 확인하십시오])를 사용하여 엄지 손가락을 원래 유형으로 다시 저장합니다 (이것은 png에서 중요합니다. 그리고 투명성을 지니고있는 gif들 (투명성을 유지할 필요가있는 경우).

표제 투명도를 보려면 imagesavealpha 및 imagealphablending을 확인하십시오.

관련 문제