Dinamik üzerinde belirli bir sayı ile bir görüntü oluşturmak için nasıl?

4 Cevap php

Gibi bir şey söyleyerek bir yer tutucu bir görüntü var:

Your rating is:
   [rating here]

Benim PHP kod dinamik tutucu görüntüsünde bunun için sol bir boşluk var oylaması numarası eklemek gerekiyordu. Bunu nasıl yapabilirim?

4 Cevap

İşte bunu nasıl bir bir örnek - gd function görüntü yapmak için çağırır kullanmak, ama güzel oyun ve görüntüleri önbelleğe. Bu örnek çalış even nicer tarayıcı zaten gerekli görüntü varsa, bu 304 döndüren sağlayarak ...

#here's where we'll store the cached images
$cachedir=$_SERVER['DOCUMENT_ROOT'].'/imgcache/'

#get the score and sanitize it
$score=$_GET['score'];
if (preg_match('/^[0-9]\.[0-9]{1,2}$/', $score)
{
    #figure out filename of cached file
    $file=$cachedir.'score'.$score.'gif';	

    #regenerate cached image
    if (!file_exists($file))
    {
        #generate image - this is lifted straight from the php
        #manual, you'll need to work out how to make your
        #image, but this will get you started

        #load a background image
        $im     = imagecreatefrompng("images/button1.png");

        #allocate color for the text
        $orange = imagecolorallocate($im, 220, 210, 60);

        #attempt to centralise the text  
        $px     = (imagesx($im) - 7.5 * strlen($score)) / 2;
        imagestring($im, 3, $px, 9, $score, $orange);

        #save to cache
        imagegif($im, $file);
        imagedestroy($im);
    }

    #return image to browser, but return a 304 if they already have it
    $mtime=filemtime($file);

    $headers = apache_request_headers(); 
    if (isset($headers['If-Modified-Since']) && 
        (strtotime($headers['If-Modified-Since']) >= $mtime)) 
    {
        // Client's cache IS current, so we just respond '304 Not Modified'.
        header('Last-Modified: '.gmdate('D, d M Y H:i:s', $mtime).' GMT', true, 304);
        exit;
    }


    header('Content-Type:image/gif');
    header('Content-Length: '.filesize($file));
    header('Last-Modified: '.gmdate('D, d M Y H:i:s', $mtime).' GMT');
    readfile($file);


}
else
{
    header("HTTP/1.0 401 Invalid score requested");
}

Eğer Image.php bu koyarsanız, aşağıdaki gibi bir görüntü etiketi kullanmak istiyorsunuz

<img src="image.php?score=5.5" alt="5.5" />

0-9 arasında değişen statik görüntüleri kullanın ve sadece çok sayıda oluşturmak için sayfada onları birleştirmek:

Your Rating: [image1.jpg][image2.jpg][image3.jpg]

Ben bir soru olduğunu biliyorum "dinamik üzerinde belirli bir sayı ile bir görüntü oluşturmak için nasıl?" ama ben bunun yerine altta yatan sorunu çözmek gerekir. Dinamik görüntü manipülasyon CPU üzerinde ağır. Sadece bunu yapmayın. Ve kesinlikle bir web isteği bağlamında bunu yapmayın. Yerine ve sonra derece bağlı olarak doğru olanı göstermek statik görüntüler sahip düşünün. Lütfen derecelendirme sistemi tüm yol 100'e gider bile, tekrar tekrar aynı görüntüyü yeniden çizilmesi tutmak için 100'den statik görüntüleri için daha iyi olurdu.

Bir div metin olarak sayısını ayarlamak neden, sonra yazı tipi ve arka plan seçenekleri ile stil?