2010-09-17 2 views
2

У меня есть функция, которую я использую для изменения моих изображений, и я хочу отображать их на моей странице вместе с другим содержимым страницы.Отображение php сгенерированного изображения на странице

PHP Функция Image:

<?php 

function dynamicImage($nw, $nh, $source, $stype, $dest) { 
     $size = getimagesize($source); 
     $w = $size[0]; 
     $h = $size[1]; 
     switch($stype) { 
      case 'gif': 
      $simg = imagecreatefromgif($source); 
      break; 
      case 'jpg': 
      $simg = imagecreatefromjpeg($source); 
      break; 
      case 'png': 
      $simg = imagecreatefrompng($source); 
      break; 
     } 
     $dimg = imagecreatetruecolor($nw, $nh); 
     $wm = $w/$nw; 
     $hm = $h/$nh; 
     $h_height = $nh/2; 
     $w_height = $nw/2; 
     if($w> $h) { 
      $adjusted_width = $w/$hm; 
      $half_width = $adjusted_width/2; 
      $int_width = $half_width - $w_height; 
      imagecopyresampled($dimg,$simg,-$int_width,0,0,0,$adjusted_width,$nh,$w,$h); 
     } elseif(($w <$h) || ($w == $h)) { 
      $adjusted_height = $h/$wm; 
      $half_height = $adjusted_height/2; 
      $int_height = $half_height - $h_height; 
      imagecopyresampled($dimg,$simg,0,-$int_height,0,0,$nw,$adjusted_height,$w,$h); 
     } else { 
      imagecopyresampled($dimg,$simg,0,0,0,0,$nw,$nh,$w,$h); 
     } 
     header("Content-type: image/jpeg"); 
     imagejpeg($dimg); 
     imagedestroy($dimg); 
     //imagejpeg($dimg,$dest,100); 
    } 
?> 

на PHP страницу, где я хочу его отображения (я вызвать функцию dynamicImage):

<img id="profilepic" src="<?php $size=getimagesize($pic); $imgx=240; $imgy=($size[1]*$imgx)/$size[0]; dynamicImage($imgx, $imgy, $pic, substr($pic, -3), ''); ?>" /> 

, но в конечном итоге выдавать пустую страницу.

Как мне обойти это без использования базового кодирования, так как мне нужно поддерживать широкий диапазон старых браузеров.

Заранее благодарен (этот сайт был так полезен smiles).

+0

Пожалуйста, отредактируйте ваше сообщение и используйте функцию «код», чтобы отобразить код как код нужного кода. Будет намного легче читать. – Rushyo

+0

спасибо, что –

+0

Sory я этого не видел. – jcubic

ответ

5

Не называйте код PHP непосредственно в теге изображения

позволяет сказать вам создайте сценарий для создания изображения и назовите его

/myimage.php 

код:

<?php 

$type = $_GET['type'] || 'png'; 
// remember to test if variables exist and handle gracefully 
$mimetypes = array(
    'jpg' => 'image/jpeg', 
    'png' => 'image/png', 
    // ad nauseum 
); 

header('Content-type: '.$mimetypes[$type]); 

// handle parsing and output of image here. 

вы затем использовать его на вашей странице, как это:

<img src="/myimage.php?width=240&height=240&type=jpg" /> 
2

Вы помещаете данные изображения в атрибут src, если хотите разместить встроенное изображение, вы должны поместить его в base64.

imagejpeg($dimg, 'tmp_image'); 
$handle = fopen($filename, "r"); 
$imgbinary = fread(fopen($imgfile, "r"), filesize($imgfile)); 

return 'src="data:image/jpeg;base64," . base64_encode($imgbinary) . '"'; 

или поставить функцию в сценарий и раздельный изменить

dynamicImage($imgx, $imgy, $pic, substr($pic, -3), '') 

в

"src=\"dynamicimage.php?w={$imgx}&h={$imgy}&fname={$pic}&type=" . substr($pic, -3) . '"; 
+0

Кажется, что уже там. –

+0

bt он отображает пустую страницу, и, кроме того, я другой контент для отображения на той же странице –

+0

Жаль, что я этого не видел. – jcubic

1

Ваше изображение должно быть в отдельном PHP страницы для остальной части содержимого страницы.

т. Е. Ваша основная страница PHP будет выводить вывод HTML как обычно. Этот HTML будет содержать тег как обычный, но атрибут src будет содержать ссылку на другую программу PHP. Вот где вы поступили не так.

Таким образом, ваш тег должен выглядеть следующим образом:

<img src='mypicture.php'> 

И тогда вам нужен отдельный PHP программу под названием mypicture.php, которая производит изображение.

Обратите внимание, что если вы создаете изображения из программы php, вам нужно быть осторожным только для вывода данных изображения и ничего другого (следите за пустыми строками в конце кода после ?>). Вам также нужно установить тип mime в заголовках в image/jpeg (или независимо от формата).

Смежные вопросы