Kontrol edin ve PHP kullanarak bir görüntü uzantısı görmek nasıl?

5 Cevap

Nasıl bir görüntü PNG, GIF, TIFF ve JPG ve olmadığını görmek için kontrol edebilirsiniz böylece üzerlerine oluşturmak ve başparmak dosyaya kaydedebilirsiniz eğer.

Şimdiye kadar kontrol ve JPEG görüntüler için kaydedebilirsiniz.

Aşağıda kodudur.

<?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) ; 
?>

5 Cevap

Burada uygun imagecreatefrom... fonksiyonu her biçimi atamak için ilişkilendirilebilir bir dizi kullanarak bunu yapmak için bir yolu, var:

$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
}

Ben ImageMagick modülü, özellikle Imagick::identifyImage() yöntemi ile gitmek istiyorum. Bu gibi aşağıda dizi döndürür - format anahtarı ne kontrol.

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
)

Siz çoğunlukla aşağı var.

pathinfo($image_path, PATHINFO_EXTENSION) dosya türünü almak için exif_image type kullanın veya kullanmayın. Sonra (örneğin, $ tip) bir değişken olduğunu kaydedin.

Sonra anahtar karşılaştırma gibi filetype seti değişken kullanılarak, (imagefromjpeg sayfasını kontrol listesi için "bakınız") uygun imagefrom * fonksiyonu çalıştırmak için bir anahtar deyimi kullanır.

Sonunda, resim * çalıştırmak için aynı temel anahtarı deyimini kullanın (imagepng, vb [kontrol onlar için imagejpeg sayfada ayrıca bakınız]) bu önemli (geri orijinal türü için başparmak kaydetmek için png ve) bu durumda saydamlık tasarrufu sağlamak gerekir ki, şeffaflık olabilir videoları için.

BTW, şeffaflık için, imagesavealpha ve imagealphablending check out.

Sen mim işlevlerini kullanabilirsiniz. Try echo mime_content_type('php.gif'):

Brianreavis yanıtladı ama görüntü türünü belirlemek için görüntü dosyasının uzantısı güvenmek olmaz değil exif_imagetype işlevini kullanmak gibi yapardım.

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