İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

thumbp sorunu

i.ari

0
İyinet Üyesi
Katılım
16 Aralık 2006
Mesajlar
4,437
Reaction score
6
Konum
Ankara
Merhaba arkadaşlar,
resim kücültme için thumbp dosyası kullanıyorum ama bazı zamanlar istedigim boyutlarda vermiyor. Bazı kısımları büyük bazı kısımları kücük cıkartabiliyor.

php doyası aşagıda yardımcı olursanız sevinirim teşekkurler

PHP:
<?php
/*
    Dosya    = thumb.php
    Yazan    = Tuncay KINALI (a.k.a. Sniper)
    Görevi    = parametre olarak verilen resmi istenilen boyutlarda küçültme, büyütme ve 
              orantılı olarak resmin içinden bir bölümü gösterme
    Parametreler    = "p": Üzerinde oynanacak resmin yolu
                      "w": Resmin maximum genişliği (opsiyonel)
                      "h": Resmin maximum yüksekliği (opsiyonel)
    Tarih    = 11.08.2007
*/

// JPG olarak çıktı vermesi için header'i ayarla
header("Content-Type: image/jpeg");

// Üzerinde oynanacak resmin yolunu query'den al
$p = $_GET['p'];
// İstenilen genişliği query'den al ve 
// istenilen genişlik 1024px'den büyükse otomatikman 1024 pixele düşür
// bu sayede bandwidth'ini korumuş olursun
$w = $_GET['w'] > 1024 ? 1024 : $_GET['w'];
// İstenilen genişliği query'den al
$he = $_GET['h'] > 1024 ? 1024 : $_GET['h'];

// Resmin bilgilerini oku
$resimyol = getimagesize($p);

// Eğer maximum genişlik belirtilmişse ve maximum yükseklik belirtilmemişse
if(isset($w) && !isset($he)) {
    // Yüksekliği otomatik ayarla
    $h = round(($w*$resimyol[1])/$resimyol[0]);
// Maximum yükseklik belirtilip genişlik belirtilmemişse
} else if(isset($he) && !isset($w)) {
    // Genişliği otomatik ayarla ve yüksekliği maximum yükseklikle sınırla
    $w = round(($he*$resimyol[0])/$resimyol[1]);
    $h = $he;
// Hem maximum genişlik hem de maximum yükseklik belirtilmişse
} else if(isset($w) && isset($he)) {
    // Yüksekliği otomatik olarak hesapla, ileride lazım olacak
    $h = round(($w*$resimyol[1])/$resimyol[0]);
// Hiçbir özellik belirtilmemişse resmi olduğu gibi göster
} else {
    $w = $resimyol[0];
    $h = $resimyol[1];
}

// Girilen resmin formatına göre resmi oluştur
switch($resimyol[2]) {
    case 1: // GIF
        $resim = imagecreatefromgif($p);
        break;
    case 2: // JPG
        $resim = imagecreatefromjpeg($p);
        break;
    case 3: // PNG
        $resim = imagecreatefrompng($p);
        break;
}

// Thumbnail'i girilen değerlere göre oluştur
$thumb = imagecreatetruecolor($w, $h);
// Ve yeni boyutlandırılmış resmi thumbnail'e yaz
imagecopyresampled($thumb, $resim, 0, 0, 0, 0, $w, $h, $resimyol[0], $resimyol[1]);

// Eğer maksimum yükseklik belirtilmişse
if(isset($he)) {
    // Maximum yüksekik resmin boyutlandırılmış halinin yüksekliğinden fazlaysa 
    // Siyah alanların görünmemesi için bunu resmin yüksekliğiyle eşitle
    if($he>$h) $he = $h;

    // İkinci thumbnail'i maximum genişlik ve yüksekliğe göre oluştur
    $thumb2 = imagecreatetruecolor($w, $he);
    // Ve ilk thumbnail'in içinden orantılı bir şekilde bu resmin içeriğini kopyala
    imagecopy($thumb2, $thumb, 0, 0, 0, (($h-$he)/2), $w, $he);
    $sonuc = $thumb2;
} else {
    $sonuc = $thumb;
}

// Resmi oluştur
imagejpeg($sonuc,lisanssız,80);
// İşi bitti, imha et.
imagedestroy($sonuc);
?>
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Üst