Downscale / yeniden boyutlandırma?

5 Cevap php

Hey! Nasıl yeniden boyutlandırmak yok / onlar 350x100 üzerinde iseniz aşağı 350x100 benim yükleme komut dosyası ile yüklenen alır görüntülerin downscale?

Benim komut:

$allowed_filetypes = array('.png','.PNG');
$filename = $_FILES['strUpload']['name']; 
$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); 
if(in_array($ext,$allowed_filetypes)) 
{
    list($width, $height, $type, $attr) = getimagesize($_FILES['strUpload']['tmp_name']);
    if ($width > 350 || $height > 100) 
    {
        echo "That file dimensions are not allowed. Only 350x100 is allowed";
        exit();
    } 

    if ($_FILES['strUpload']['size'] > 2097152 )
    {
        echo "ERROR: Large File Size. Only less than 2mb accepted";
        exit();
    }

    $imagename = uniqid('ff') . ".png";
    move_uploaded_file ( $_FILES['strUpload']['tmp_name'], $imagename );

    print ( "<script type=\"text/javascript\">" );
    if(file_exists($imagename) && $_FILES['strUpload']['name'] != '')
    {
        print ( "self.opener.SetImageFile(\"" . $imagename . "\");" );
        echo "\n";
        print ( "self.opener.setInputFile(\"" . $imagename . "\");" );
    }
    echo "\n";
    print ( "window.close();" );
    echo "\n";
    print ( "</script>" );

    $open = new dbconnect();
    $open->callDB("localhost","pema2201_william","lindberg","pema2201_siggen");

    $ip = $_SERVER['REMOTE_ADDR'];
    $dattum = date('Y-m-d H:i:s', time());

    mysql_query("INSERT INTO piclist (ip,pic,datum) VALUES('$ip','$imagename','$dattum')") or die(mysql_error());

} 
else 
{
    echo "WRONG FILE TYPE ONLY PNG ALLOWED"
}

5 Cevap

PHP birçok görüntü işleme kütüphaneleri vardır. GD library bu yüzden ben bu kullanmanızı öneririz PHP 4.3 beri sevk etti. Sadece ne gerek bulmak için dokümanlar okumak.

Kullan imagecopyresized - PHP kılavuzu sayfasında kullanmak için nasıl iyi bir örnek var.

Fun with PHP and Images

Onun güzel bir öğretici, sorununuzu çözmek gerekir.

this başkası bir kaç gün önce sorulan soruya bakabilirsiniz.

Yani nasıl yapıldığını anlatıyor, ama aynı zamanda etkili bir şekilde nasıl yapılır sadece. (ImageMagick GD kütüphanesi üzerinde kullanılmalıdır)

Umut olur.

Genel özü içeri görüntü için istenen boyutlarda yeni bir "tuval" yaratmak

Yüklenen görüntü almak ve bir kaynak genişlik x yükseklik (kaynak görüntünün tümünün) ve hedef genişlik x yükseklik (hedef tuval tümünü kullanabilirsiniz) ayarını vererek yeni tuval üzerine kopyalamak, uzaklıklar biraz etrafında görüntüyü kaydırmak için kullanılabilir Eğer gerekiyorsa.

Eğer gitmek, ya da bir veritabanı alanına eklemek için gereken yere sonra nihayet kaydedin, (bu move_uploaded_file çağrı yerini alacak).