Ben farklı görüntü boyutları işlemek için en iyi yolu nedir, farklı sanat satan bir web sitesi üzerinde çalışıyorum?

2 Cevap php

Kullanıcıların farklı boyutlarda kendi sanat yüklemek ve satmak için sağlayacak bir web sitesi üzerinde çalışıyorum. Ben iyi yolu otomatik olarak farklı dosya boyutlarını ele almak ne olacağını merak ediyordum. Ben merak ediyordum birkaç nokta:

  • Ben orantılı boyutları ile dinamik olarak yeniden boyutlu görüntüler mümkün olacak şekilde (büyük, küçük, orta,) farklı boyut kategoriler tanımlamak için nasıl.

  • Ben indirmek için farklı boyutlarda gerçek jpegler saklamak gerekir? Yoksa anında indirmek için bu farklı boyutlarda üretmek daha kolay olacaktır

  • Ben onu kaplayan filigran siteleri ile ikinci bir 'küçük resim' saklamalısınız Benim küçük, ortalama küçük biraz daha büyük olacak? Ya da bir kez daha, bu hızlı oluşturmak?

Tüm görüşler, tavsiye büyük takdir!

2 Cevap

I aarongriffin.co.uk ile böyle bir şey yapmak.

Orada bazı görüntüler anında onlar istenen ilk kez üzerinde yeniden boyutlandırılır, ve sonra saklanır; Diğerleri yükleme sırasında oluşturulur iken. Gruplara (yani küçük resim) talep edilmesi eğilimi Görüntüler yükleme sırasında oluşturulur ve bir anda görüntülenecek eğilimi görüntüleri anında oluşturulur. Bu benim için iyi çalıştı, ama bu çok fazla trafik olmadan bir site.

Python ve Django çalışıyorum, bu yüzden bunun için sorl-üzerlerine kullanın. PHP size (çeşit) aynı şeyi çeşitli imagecreatefrom * işlevlerine erişmek lazım.

Ben (Belirli bir albüm filigran olmalıdır eğer) resim filigran sürümlerini oluşturmak ve yerine unwatermarked kopya bu mağaza.

Bunun için php minik kontrol edebilirsiniz. Burada belki yararlı bir kod parçacığı var.

<?php
# Constants
define(IMAGE_BASE, '/var/www/html/mbailey/images');
define(MAX_WIDTH, 150);
define(MAX_HEIGHT, 150);

# Get image location
$image_file = str_replace('..', '', $_SERVER['QUERY_STRING']);
$image_path = IMAGE_BASE . "/$image_file";

# Load image
$img = null;
$ext = strtolower(end(explode('.', $image_path)));
if ($ext == 'jpg' || $ext == 'jpeg') {
    $img = @imagecreatefromjpeg($image_path);
} else if ($ext == 'png') {
    $img = @imagecreatefrompng($image_path);
# Only if your version of GD includes GIF support
} else if ($ext == 'gif') {
    $img = @imagecreatefrompng($image_path);
}

# If an image was successfully loaded, test the image for size
if ($img) {

    # Get image size and scale ratio
    $width = imagesx($img);
    $height = imagesy($img);
    $scale = min(MAX_WIDTH/$width, MAX_HEIGHT/$height);

    # If the image is larger than the max shrink it
    if ($scale &lt; 1) {
        $new_width = floor($scale*$width);
        $new_height = floor($scale*$height);

        # Create a new temporary image
        $tmp_img = imagecreatetruecolor($new_width, $new_height);

        # Copy and resize old image into new image
        imagecopyresized($tmp_img, $img, 0, 0, 0, 0,
                         $new_width, $new_height, $width, $height);
        imagedestroy($img);
        $img = $tmp_img;
    }
}

# Create error image if necessary
if (!$img) {
    $img = imagecreate(MAX_WIDTH, MAX_HEIGHT);
    imagecolorallocate($img,0,0,0);
    $c = imagecolorallocate($img,70,70,70);
    imageline($img,0,0,MAX_WIDTH,MAX_HEIGHT,$c2);
    imageline($img,MAX_WIDTH,0,0,MAX_HEIGHT,$c2);
}

# Display the image
header("Content-type: image/jpeg");
imagejpeg($img);
?>