Yeni eklenen sonra küçük sorun - PHP on-the-fly yöntemi

2 Cevap php

Selam tekrar ...> Bir kaç dakika önce çözülmesi var benim önceki soruyu okudum olanlar için. <

On-the-fly php komut ... mükemmel çalışıyor, ama ben kendimi yapılmış bir galeriye yeni resim yüklemek için gittiğinde, görüntüleri ben ne istediğini x 150, 150 boyutu vardır, ancak yeni görüntülere gelince hepsi siyah ekleniyor ...

alt text

Gördüğünüz gibi klasör ve dizine tarih olan üç siyah görüntüler veritabanına eklendi.

Diğer (non-siyah görüntüler) zaten Image.php ile yeniden boyutlandırılır.

Ne bu neden oluyor?

Ben kaynağını görüntülemek, kod PHP while döngüsü şöyle bir çıktı üretir ... gayet:

<div class="view-wrap" id="photo-10">
    <div class="view-icon">
        <div class="img-label">
            <a href="#" id="10" class="delete"><img src="img/small-delete.png" /> Delete</a>
        </div>

        <a href="img/events/Paintballing/24251_1395408043148_1170626626_1204038_5382765_n.jpg">
            <img src="image.php?dir=img/events/Paintballing/24251_1395408043148_1170626626_1204038_5382765_n.jpg" alt="" width="110" height="110" />
        </a>
    </div>
</div>

Bir bloğun bir örnek.

Ben (Firefox) kaynağını görüntüleyebilir ve Image.php üzerine tıklarsanız? Xmaple tarafından = img/events/Paintballing/24251_1395408043148_1170626626_1204038_5382765_n.jpg dir, ben 150 x 150 büyüklüğünde de ama düzeninde üzerlerine görebilirsiniz, o bir gösterir siyah küçük ...

Bu neden oluyor biliyor mu?

EDIT:

<?php 

$dir = $_GET['dir'];

header('Content-type: image/jpeg'); 

$create = imagecreatetruecolor(150, 150); 

$img = imagecreatefromjpeg($dir);

list($width, $height) = getimagesize($dir);

imagecopyresampled($create, $img, 0, 0, 0, 0, 150, 150, $width, $height);

imagejpeg($create, null, 100); 

?>

Bu image.php olduğunu.

2 Cevap

Yazınızı güncellenmesi için teşekkürler.

Eğer görüntü jpg / jpeg sizin yükleme olduğunu olumludur.

Aşağıdaki ile değiştirmeyi deneyin

<?php 

$dir = $_GET['dir'];
$ext = strtoupper(pathinfo($dir, PATHINFO_EXTENSION));
switch($ext)
{
    case 'jpeg':
    case 'jpg':
        $img = imagecreatefromjpeg($dir);
    break;
    case 'png':
        $img = imagecreatefrompng($dir);
    break;
    case 'gif':
        $img = imagecreatefromgif($dir);
    break;
}
if(isset(img))
{
    header('Content-type: image/jpeg'); 
    $create = imagecreatetruecolor(150, 150); 
    list($width, $height) = getimagesize($dir);
    imagecopyresampled($create, $img, 0, 0, 0, 0, 150, 150, $width, $height);
    imagejpeg($create, null, 100); 
}else
{
   echo sprintf('Unable to process image, Unknown format %s',$ext);
}
?>

Aksine görüntüleri germe neden daha bir sınır eklemek değil?

İşte fonksiyonu bulunuyor

    function resize_to_canvas($filename,$canvas_w=100,$canvas_h=225){
list($width, $height, $type) = getimagesize($filename);

$original_overcanvas_w = $width/$canvas_w;
$original_overcanvas_h = $height/$canvas_h;

$dst_w = round($width/max($original_overcanvas_w,$original_overcanvas_h),0);
$dst_h = round($height/max($original_overcanvas_w,$original_overcanvas_h),0);

$dst_image = imagecreatetruecolor($canvas_w, $canvas_h);
$background = imagecolorallocate($dst_image, 255, 255, 255);
imagefill($dst_image, 0, 0, $background);

$src_image = imagecreatefromjpeg($filename);
imagecopyresampled($dst_image, $src_image, ($canvas_w-$dst_w)/2, ($canvas_h-$dst_h)/2, 0, 0, $dst_w, $dst_h, $width, $height);
imagegif($dst_image, $filename);
imagedestroy($dst_image);}

Bu işlev, orijinal dosya yerini alacak, ancak kolayca yeni bir resim oluşturmak için modifiye edilir. Sadece dosya adını hattı imagegif ($ dst_image, $ dosya) değiştirmek;