GD - görüntü dönen IE ve Opera'da çalışmıyor

3 Cevap php

Ben tanımlı görüntüyü döndürür bir fonksiyon oluşturduk. Bu firefox mükemmel çalışır, ancak IE ve Opera hiçbir şey olmuyor - resim yeniden ama dönmedi. Neden herkes biliyor mu? İşte kod gider:

function rotateImage($direction, $id, $angle) {
	$dir = opendir($direction);
	if ($img = imagecreatefromjpeg($_SESSION['files'][$id]['large'])) {
		$width = imagesx ( $img );
		$height = imagesy ( $img );
		$rotate = imagerotate($img, $angle, 0);
		imagejpeg($rotate, $_SESSION['files'][$id]['large'], 100);
	}
	else {
		echo '<p>Error: image cannot be rotated</p>';
	}
	closedir($dir);
}

3 Cevap

Rotasyon sunucu tarafında yapıldığı gibi The problem is definitely not with the browser kullandığınız.

Sen bir önbelleğe alma sorunu ya da işlevini çağırmak için kullanılan kod ile bir sorun haline çalışıyor olabilir.

Mısınız:

  • Using JavaScript to initiate a reload?
    Your JavaScript code might be the issue here.

  • Sending the proper no-cache headers?
    If not, you might be running into a situation where the image is cached on the browser, which is why you are not seeing your changes. Either send the proper Cache-control and Expires headers, or append a random identifier to the image url (?_=$x where $x = time() will work fine... Headers are preferred).

  • Sending the proper Content-type header?
    Not sending the proper headers might cause erratic behavior in some browsers. You might want to try using header('Content-type: image/jpeg')

  • Sending only the image data without any extra characters?
    Make sure you don't output anything else than the image. Your output stream must not have any extra characters, including whitespaces.

Ben görüntü için uygun bir Content-Type üstbilgisi gönderme değildir şüpheli olur. Alternatif olarak, görüntü biraz (genellikle kaynak kodu php etiketleri önce / sonra boşluklardan kaynaklanan) bozulmuş olabilir. (Örneğin Editplus gibi) bir metin editörüyle açın ve başlatmak veya bir boşluk ile bitmiyor kontrol, sabit diskinizde Firefox görüntüyü kaydedin.

PHP sunucu tarafında, yani bir tarayıcıda çalışır eğer kod çalışıyor ve sorun tarayıcı ile yatıyor. IE ve opera görüntüyü önbelleklediğiniz zannedebilir. Mümkünse onlar önbelleğe alamadım böylece görüntüler için başlıkları ayarlayabilirsiniz:

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past