Farklı kaynaklardan gelen görüntüleri gösteremeyecek

1 Cevap php

Belirli bir öğe için bir görüntü raporu oluşturmak için çalışıyorum. Her öğe değişken $ pk depolanan benzersiz bir madde numarası vardır.

Bu, görüntüler / $ pk.jpg ve / veya ekran / $ pk.jpg çağrılması geçerli öğe sayfa için ilgili görüntü veya ekran gösterecektir. Bu benim açılan raporda değil ancak, gerçek sayfa çalışıyor.

Bir dosya için, ben çıkan dosya depolama olmadan, çıktısı önce 800px bunu trim diliyorum.

Ayrıca, insanların dosya yükleyebilir, bu yüzden tüm dosyaların bir listesini almak için çalışıyorum yüklenen png uç, ve tarayıcıya çıktı bunların her biri.

Aşağıda benim kod ancak sadece html başlık çıktı.

Ben yanlış ne yapıyorum? Bu imagepng yöntemin yanlış olduğunu?

benim kod:

<?php
if (isset($_GET["pk"])) {
    $pk = $_GET["pk"];
}
$con = mysqli_connect("localhost","user","pass", "db");
if (!$con) {
    echo "Can't connect to MySQL Server. Errorcode: %s\n". mysqli_connect_error();
    exit;
} {
    echo "<h1>Image report for auction number: ".$pk. "</h1> \n";
    $srcName = 'screenshots/'.$pk.'.png';
    $info = getimageinfo($srcName);
    $src = imagecreatefrompng($srcName);
    $dest = imagecreate($info[0], min($info[1], 800));
    imagecopy($dest, $src, 0, 0, 0, 0, $info[0], min($info[1], 800));
    imagepng($dest);
    imagepng('images/'.$pk.'.png');
    $filesQuery = "SELECT FILENAME FROM FILES WHERE FILENAME LIKE %png%";
    if ($getFiles = $con->prepare($filesQuery)) {
    	$getFiles->execute();
    	$getFiles->bind_result($FILENAME);
    	$files = array();
    	while ($getFiles->fetch()) {
    		$filename = array(
    		         'FILENAME' => $FILENAME,
    		          );
    		$files[] = $filename;
    	}
    }
    $filesList = '';
    foreach ($files as $filenames) {
    	$imagepng($filenames['FILENAME']);
    }
    ;
}

1 Cevap

Yapmaya çalıştığınız gibi: Sen (HTML içinde bir PNG embed olduğunu) HTML ve PNG çıkış karıştırabilirsiniz olamaz. Iki parça halinde bu script bölmek gerekir.

İlk bölüm (örn. report.php) img etiketleri ile birlikte tüm görüntülerin bir listesini verir. Örn:

<img src="/thumbnail.php?pk=1234567" />

Sonra uygun başlığıyla birlikte çıkış görüntü (ve sadece görüntü) için thumbnail.php uygulamak. Örn:

<?php
$srcName = 'screenshots/'.$_GET['pk'].'.png';
$info = getimageinfo($srcName);
$src = imagecreatefrompng($srcName);
$dest = imagecreate($info[0], min($info[1], 800));
imagecopy($dest, $src, 0, 0, 0, 0, $info[0], min($info[1], 800));

header('Content-type: image/png');
imagepng($dest);
imagedestroy($src);
imagedestroy($dest);
?>

Kodunuzu iki Açıklamalar:

  1. o (imagecreatefrompng veya imagecreate ile oluşturulan olarak bir kaynak,) ilk parametre olduğu gibi imagepng () bir görüntü kaynak alır. Ilk parametre olduğu gibi bir dosya adı almaz.
  2. Her zaman bırakalım imagedestroy () ile oluşturulan veya (web sunucunuzun yeniden başlatılmasını gerektiren) zamanla bellek tükeneceğini görüntüleri yok.