用下面的php缩略图函数,对某一些jpg图片无法生成缩略图,而其他却可以,这是为啥?

php缩略图生成函数:<?php/**函数功能:把图像缩小到指定大小,若原图比例与新图不一致,从两边裁剪,图像不变形*parameter:*$src_file:源文件*$... php缩略图生成函数:
<?php
/*
*函数功能:把图像缩小到指定大小,若原图比例与新图不一致,从两边裁剪,图像不变形
* parameter:
* $src_file:源文件
* $dst_file:目标文件
* $new_width,$new_height:生成图片的宽和高
*/
function my_image_resize($src_file, $dst_file , $new_width , $new_height) {
$src_img=imagecreatefromjpeg($src_file);
$w=imagesx($src_img);//原图宽度
$h=imagesy($src_img);
$ratio_w=1.0 * $new_width / $w;
$ratio_h=1.0 * $new_height / $h;
$ratio=1.0;
if($ratio_w <=1 && $ratio_h <= 1) {
if($ratio_w < $ratio_h)
{
$ratio = $ratio_h ; // 情况一,宽度的比例比高度方向的小,按照高度的比例标准来裁剪或放大
}else
{
$ratio = $ratio_w ;
}
// 定义一个中间的临时图像,该图像的宽高比 正好满足目标要求
$inter_w=(int)($new_width / $ratio);
$inter_h=(int) ($new_height /$ratio);
$x=($w-$inter_w)/2;
$y=($h-$inter_h)/2;
$inter_img=imagecreatetruecolor($inter_w , $inter_h);
imagecopy($inter_img, $src_img, 0,0,$x,$y,$inter_w,$inter_h);
// 生成一个以最大边长度为大小的是目标图像$ratio比例的临时图像
// 定义一个新的图像
$new_img=imagecreatetruecolor($new_width,$new_height);
//$new_img=iconv("UTF-8","gb2312", $new_img);
imagecopyresampled($new_img,$inter_img,0,0,0,0,$new_width,$new_height,$inter_w,$inter_h);
imagejpeg($new_img, $dst_file,100);
}
}
?>
重新测试了一下,函数第一步imagecreatefromjpeg($src_file);就无法执行了,奇怪的是,只是一部分图片会这样,其他正常,
把照片后缀改为png,函数也相应改变后,就可以了,奇怪。
展开
 我来答
jimrontse
2013-09-06 · 超过24用户采纳过TA的回答
知道答主
回答量:117
采纳率:0%
帮助的人:57.8万
展开全部
注意

1:应在判断好图片后准备作输出或保存再使用方法imagecreatefromjpeg

2:imagesy($src_img);请考虑使用 list($width,$height) = getimagesize($src_img);

3:$ratio_h=1.0 * $new_height / $h;//n=未知数 ,1乘以任何的n,结果都还是n,为何要做这?

4:你的程序是接收外部输入的尺寸,这会导致输出或保存的图片扭曲、变形

5:$ratio=1.0;
if($ratio_w <=1 && $ratio_h <= 1) {
if($ratio_w < $ratio_h){}else {}//注意4:考虑使用三元算法

6:$inter_h=(int) ($new_height /$ratio);//PHP对数据类型不像Java那样敏感,不必使用int强行转换

7:处理好后记得销毁图片imagedestroy();

最后:你可以说明下你要的效果
博思aippt
2024-07-20 广告
作为深圳市博思云创科技有限公司的工作人员,对于Word文档生成PPT的操作,我们有以下建议:1. 使用另存为功能:在Word中编辑完文档后,点击文件->另存为,选择PowerPoint演示文稿(*.pptx)格式,即可将文档内容转换为PPT... 点击进入详情页
本回答由博思aippt提供
百度网友54071a765
2013-09-06 · 超过21用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:53万
展开全部
可能那图片别人修改了扩展名,电脑的能力强,可以显示,程序就不一定了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cds325
2013-09-05
知道答主
回答量:8
采纳率:0%
帮助的人:3.6万
展开全部
看看类型,都是jpg图片吗?
追问
是jpg
追答
image_type_to_mime_type检测图片的mime类型,然后使用相应的函数试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式