用下面的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,函数也相应改变后,就可以了,奇怪。 展开
<?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,函数也相应改变后,就可以了,奇怪。 展开
3个回答
展开全部
注意
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();
最后:你可以说明下你要的效果
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 广告
2024-07-20 广告
作为深圳市博思云创科技有限公司的工作人员,对于Word文档生成PPT的操作,我们有以下建议:1. 使用另存为功能:在Word中编辑完文档后,点击文件->另存为,选择PowerPoint演示文稿(*.pptx)格式,即可将文档内容转换为PPT...
点击进入详情页
本回答由博思aippt提供
展开全部
可能那图片别人修改了扩展名,电脑的能力强,可以显示,程序就不一定了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看看类型,都是jpg图片吗?
追问
是jpg
追答
image_type_to_mime_type检测图片的mime类型,然后使用相应的函数试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询