Düzgün PHP büyük görüntüleri yeniden boyutlandırmak için nasıl

0 Cevap php

Ben işletilen bir web sitesi için, kullanıcılar bir galeriye çizdiğiniz resim yükleyebilirsiniz. Biz (tam boyutlu görüntü gösterir küçük görünüm tıklayarak görüntüyü) diğer kullanıcılara görüntülemek için küçük resmine ve o görüntünün küçük bir görünüm oluşturun.

Bu düşünceyle, ben çok basit bir yeniden boyutlandırma komut dosyası oluşturulur. Çoğu durumda bu script mükemmel çalışıyor. Ancak, komut dosyası tamamen haberci yukarıya çıktığı tek bir garip durumda geldim.

Dosyayı çalıştırırken http://img191.imageshack.us/img191/2268/935full.png (1641x3121) (150 ve 400 başka bir maksimum genişlik veya yüksekliği olan bir minik oluşturur) komut dosyası aracılığıyla biz mükemmel bir küçük olsun http://img267.imageshack.us/img267/5803/935thumb.png (78x150) ve küçük bir görünüm resim düzgün büyüklükte, ama kesilmiş ve http://img28.imageshack.us/img28/4002/935show.png (211 x 400) gergin olan.

Aklınızda ile, benim soru: Bu PHP bir sorun ya da bir mantık hatası var mı? Ve bunu nasıl düzeltebilirim?

Zaman ayırdığınız için teşekkür ederiz. Ben bu küçük oluşturmak için kullandığınız kod aşağıda.

<?php
/**
 * Creates a thumbnail for any type of pre-existing image. Always saves as PNG image
 *
 * @param string - The location of the pre-existing image.
 * @param string - The location to save the thumbnail, including filename and extension.
 * @param int    - The Maximum Width, Default of 150
 * @param int    - The Maximum Height, Default of 150
 * @return bool  - Success of saving the thumbnail.
 */
function imagecreatethumbnail($file,$output,$max_width = 150,$max_height = 150)
{
        $img = imagecreatefromstring(file_get_contents($file));
        list($width, $height, $type, $attr) = getimagesize($file);
        if($height > $max_height || $width > $max_width)
        {
                if($width > $height)
                {
                        $thumb_width = $max_width;
                        $thumb_height = ceil(($height * $thumb_width)/$width);
                }
                else
                {
                        $thumb_height = $max_height;
                        $thumb_width = ceil(($width * $thumb_height)/$height);
                }
        } else {
                $thumb_width = $width;
                $thumb_height = $height;
        }
        imagesavealpha($img,true);
        $thumb = imagecreatetruecolor($thumb_width,$thumb_height);
        imagesavealpha($thumb,true);
        imagealphablending($thumb,false);
        imagecopyresampled($thumb,$img,0,0,0,0,$thumb_width,$thumb_height,$width,$height);
        $return = imagepng($thumb,$output);
        imagedestroy($img);
        imagedestroy($thumb);
        return $return;
}

0 Cevap