dinamik php jpg / png / gif görüntüleri küçültmek

4 Cevap php

Dinamik php bir görüntü ölçekleme basit bir yolu var mı?

Id özellikle ben gibi benim heml takabilirsiniz fonksiyonunun çeşit kullanmak ister

<img src=image.php?img=boss.jpg&width=500>

ve tabii ki daha sonra 500px genişliğinde bunu sınırlandırmaktadır ne olursa olsun yüksekliği için görüntü ölçek olur

i sayesinde tüm giriş için teşekkür ederiz.

EDIT jpg png ve gif dosya türleri şunlardır gerek yoktur

4 Cevap

Gerçekten kullanmak gerçekten çok kolay çünkü ben, WideImage kütüphane tercih ederim.

Senin durumunda, yapmanız gereken her şey:

$img_path = $_GET['img'];
$new_width = $_GET['width'];

$new_img = wiImage::load($img_path)->resize($new_width);

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

echo $new_img->asString('jpg', 80);

Ve bu destekler jpeg, png, gif, gd, ...

test değil

$file = $_GET('img');
$wid = $_GET('width');

// better ways to do this, but this works in a pinch
$orig = @imagecreatefromjpeg($file);
if ($orig === FALSE) $orig = @imagecreatefromgif($file);
if ($orig === FALSE) $orig = @imagecreatefrompng($file);
if ($orig === FALSE) exit("can't continue; $file is unreadable\n");

// aspect ratio stuff
$sx = imagesx($orig);
$sy = imagesy($orig);
$hyt = round($wid * $sy / $sx);

$img = imagecreatetruecolor($wid, $hyt);
imagecopyresampled($img, $orig, 0, 0, 0, 0, $wid, $hyt, $sx, $sy);
header('Content-type: image/jpeg');
imagejpeg($img);

Bir GD kütüphanesi kullanımı ve istediğiniz gibi görüntü ölçek olur basit bir komut dosyası oluşturabilirsiniz. manual edin

Siz istediğiniz gibi Image.php olarak kaydedin, bu çalışması gerekir.

<?php

if (array_key_exists('img', $_GET) === true)
{
    if (is_file($_GET['img']) === true)
    {
    	$scale = array();

    	$scale[] = (array_key_exists('width', $_GET) === true) ? $_GET['width'] : null;
    	$scale[] = (array_key_exists('height', $_GET) === true) ? $_GET['height'] : null;

    	Image($_GET['img'], implode('*', $scale));
    }
}

function Image($image, $scale = null)
{
    $type = image_type_to_extension(@exif_imagetype($image), false);

    if (function_exists('ImageCreateFrom' . $type) === true)
    {
    	$image = call_user_func('ImageCreateFrom' . $type, $image);

    	if (is_resource($image) === true)
    	{
    		$size = array(ImageSX($image), ImageSY($image));

    		if (isset($scale) === true)
    		{
    			$scale = array_filter(explode('*', $scale), 'is_numeric');

    			if (count($scale) >= 1)
    			{
    				if (empty($scale[0]) === true)
    				{
    					$scale[0] = $scale[1] * $size[0] / $size[1];
    				}

    				else if (empty($scale[1]) === true)
    				{
    					$scale[1] = $scale[0] * $size[1] / $size[0];
    				}
    			}

    			else
    			{
    				$scale = array($size[0], $size[1]);
    			}
    		}

    		else
    		{
    			$scale = array($size[0], $size[1]);
    		}

    		$result = ImageCreateTrueColor($scale[0], $scale[1]);

    		if (is_resource($result) === true)
    		{
    			ImageCopyResampled($result, $image, 0, 0, 0, 0, $scale[0], $scale[1], $size[0], $size[1]);

    			if (headers_sent() === false)
    			{
    				header('Content-Type: image/' . $type);

    				if ($type == 'gif')
    				{
    					return ImageGIF($result, null);
    				}

    				else if ($type == 'png')
    				{
    					return ImagePNG($result, null, 9);
    				}

    				else if ($type == 'jpeg')
    				{
    					return ImageJPEG($result, null, 90);
    				}
    			}
    		}
    	}
    }

    return false;
}

?>