我有一个用于修改图像的功能,我想在我的页面上显示这些图像以及其他页面内容。
PHP图片功能:
<?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), ''); ?>" />
但它最终会给出一个空白页面。
我如何使用基本编码,因为我需要支持各种旧版浏览器。
提前致谢(此网站非常有帮助 微笑 )。
答案 0 :(得分: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" />
答案 1 :(得分:3)
您正在将图像数据放到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) . '"';
或将您的函数放入separete脚本并更改
dynamicImage($imgx, $imgy, $pic, substr($pic, -3), '')
到
"src=\"dynamicimage.php?w={$imgx}&h={$imgy}&fname={$pic}&type=" . substr($pic, -3) . '";
答案 2 :(得分:1)
您的图片需要位于与页面内容其余部分分开的PHP页面中。
即您的主PHP页面将正常生成HTML输出。该HTML将包含正常的标记,但src属性将包含指向另一个PHP程序的链接。这是你出错的地方。
所以你的标签需要看起来像这样:
<img src='mypicture.php'>
然后你需要一个名为mypicture.php的独立PHP程序来生成图像。
请注意,如果您是从php程序生成图像,则需要注意只输出图像数据而不是其他内容(在?>
之后注意代码末尾的空白行) 。您还需要将标题中的mime类型设置为image / jpeg(或任何格式)。