我正在使用php和ajax。我能够从数据库中检索图像,但我希望以100px x 100px大小显示图像,但它只是检索原始图像大小并破坏了我所做的对齐工作。
如何修复检索到的图像的宽度和高度。我使用以下代码从数据库中恢复
$query = "select bin_data from imageupload where Id=1;";
$result = mysql_query($query, $con);
$result_data = mysql_fetch_array($result, MYSQL_ASSOC);
header("Content-type: image/jpeg") ;
echo $result_data['bin_data'];
答案 0 :(得分:1)
这些是此代码执行的步骤
这是从各种代码段创建的 我在php.net和网络上的其他地方找到了这个 除了以外的任何代码,我都不会赞成 把碎片放在一起。 http://www.php.net/manual/en/function.getimagesize.php
<?php
$source_pic = 'images/source.jpg';
$destination_pic = 'images/destination.jpg';
$max_width = 500;
$max_height = 500;
$src = imagecreatefromjpeg($source_pic);
list($width,$height)=getimagesize($source_pic);
$x_ratio = $max_width / $width;
$y_ratio = $max_height / $height;
if( ($width <= $max_width) && ($height <= $max_height) ){
$tn_width = $width;
$tn_height = $height;
}elseif (($x_ratio * $height) < $max_height){
$tn_height = ceil($x_ratio * $height);
$tn_width = $max_width;
}else{
$tn_width = ceil($y_ratio * $width);
$tn_height = $max_height;
}
$tmp=imagecreatetruecolor($tn_width,$tn_height);
imagecopyresampled($tmp,$src,0,0,0,0,$tn_width, $tn_height,$width,$height);
imagejpeg($tmp,$destination_pic,100);
imagedestroy($src);
imagedestroy($tmp);
?>
答案 1 :(得分:1)
如果带宽不是问题,则调整图像大小对服务器来说是CPU密集型的:
<img src="theimage.jpg" style="width:100px; height:100px;" />
现代浏览器过滤图像,使其在调整大小时看起来很好。
要保持纵横比和裁剪,请执行以下操作:
<div style="width:100px; height:100px; overflow:hidden; display:inline-block;">
<img src="theimage.jpg" style="width:100px;" />
</div>
还可以考虑使用Pasta的答案加上图像缓存。每张照片仅调整一次,而不会丢失原件。
答案 2 :(得分:0)
您可以使用PHP的gd
模块执行此操作。请参阅imagecopyresampled
函数及其文档中的示例。
请注意,这是一项昂贵的操作,因此您应该在上传图像时保存已调整大小的图像,或者缓存结果。