resim düzenleme fonksiyonu

3 Cevap php

Ben görüntülerin üzerine metin bindirmek için bir fonksiyon oluşturduk, ama ben başka bir komut dosyası içinde kullanılan ya ekranına outputted edilebileceği bir şekilde görüntü çıktısı bir yol bulmak için başım çizilmeye.

Ben o görüntü ve kullanmak için metni geçen, bir php komut dosyası bu fonksiyonu çağırabilirsiniz, ama işlevi verileri döndüğünde - nedeniyle başlığına sayfanın devraldı - tüm çıkış görüntü olarak alıyorum.

Ben bu kolay biridir ve sadece benim PHP bilginiz bir delik gösterir şüpheli - Biri düz beni burada ayarlayabilirsiniz?

Teşekkürler!

function makeimage($file, $text) { ob_start(); $x = getimagesize($file); $width = $x[0]; $height = $x[1]; $type = $x[2];

	//header('Content-type: $type');

	if ($type == 1) {
		$im = imagecreatefromgif($file);
	} elseif ($type==2) {
		$im = imagecreatefromjpeg($file);
	} elseif ($type==3) {
		$im = imagecreatefrompng($file);
	}

	// Create some colors
	$white = imagecolorallocate($im, 255, 255, 255);
	$grey = imagecolorallocate($im, 128, 128, 128);
	$black = imagecolorallocate($im, 0, 0, 0);

	// Replace path by your own font path
	$font = 'arial.ttf';

	// Add some shadow to the text
	imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);

	// Add the text
	imagettftext($im, 20, 0, 10, 20, $black, $font, $text);

ob_clean(); //to be sure there are no other strings in the output buffer
imagepng($im);
$string = ob_get_contents();
ob_end_clean();
return $string;

}

Ben bu görüntüyü oluşturmak, ve sonra tüm diğer çıktı arasında içinde ekranda görüntülemek gibi böyle bir şekilde çıkışı olmasını istiyorum.

3 Cevap

Sen bir sayfada komut dosyası görüntüyü bu çıkış koymak ve bunu göstermek için bir html etiketi o sayfayı aramak zorunda.

Example:
image.php

<php
$image = $_GET['image'];
$text = $_GET['text'];
makeimage($image, $text);
?>

sayfa.html:

<html>
<body>
<img src="image.php?image=foo.jpg&text=hello" />
</body>
</html>

Doğrudan çıkış görüntüyü istemiyorsanız, sadece işlevi başlığı göndermek yok. Her tarayıcı görüntü dosyası olarak tepki görür.

Ayrıca, döndükten sonra imagedestroy ($ im) idam olsun asla!

Sadece görüntü oluşturmak ve bir dosyaya kaydedebilir, imagepng() documentation kontrol etmek istiyorsanız. Ikinci parametre bir dosya kabul eder:

The path to save the file to. If not set or NULL, the raw image stream will be outputted directly.

According to your edit:

Görüntüyü oluşturmak için dosya parametresi ile imagepng kullanın ve sonra script ona bağlamak gerekir.

Küçük bir örnek:

<?php
// ...
imagepng($im, 'foo.png');
?>
<img src="foo.png" />

Diğer yol etrafında image / png başlıkları ve doğrudan çıktı passtrough Sarıcı komut dosyası kullanarak Davide Gualanos çözüm olacaktır.

Eğer fonksiyonunun çıkışını yakalamak için geçici bir çıkış tampon kullanın ve daha sonra onunla dolu bir dize sahip olabilir

Örnek:

ob_start ();

... Resminizin fonksiyon kodu ...

ob_clean (); / / Emin olmak için çıkış tampon başka hiçbir dizeleri vardır

imagepng ($ im);

$ String = ob_get_contents ();

ob_end_clean ();

$ dize döndürmek;

$ String () imagepng tüm çıktıyı aldım;