求修改一段php代码

作者:超级管理员 更新时间:2017-09-12 17:57:29 来源:未知 点击:15642
求修改一下这个php代码,让动态生成的缩略图固定高宽,拉伸不变形,不留空白
求修改一下这个php代码,让动态生成的缩略图固定高宽,拉伸不变形,不留空白

<?php
$filename= $_GET[‘filename‘];
$width = $_GET[‘width‘];
$height = $_GET[‘height‘];
$path="http://localhost/images/"; //finish in "/"
// Content type
header(‘Content-type: image/jpeg‘);
// Get new dimensions
list($width_orig, $height_orig) = getimagesize($path.$filename);
if ($width && ($width_orig < $height_orig)) {
  $width = ($height / $height_orig) * $width_orig;
} else {
  $height = ($width / $width_orig) * $height_orig;
}
// Resample
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($path.$filename);
imagecopyresampled($image_p,$image,0,0,0,0,$width,$height,$width_orig,$height_orig);
// Output
imagejpeg($image_p, null, 100);
// Imagedestroy
imagedestroy ($image_p);
?>

调用方法:

<img src="thumbs.php?filename=photo.jpg&width=100&height=100">
-------------------------------
不变形的意思是不是要保持宽高比例啊,这样的话肯定会有空白啊
-------------------------------
引用 1 楼 hongmei85 的回复:
不变形的意思是不是要保持宽高比例啊,这样的话肯定会有空白啊

这个我就不懂了,我的意思比如一张图片的宽度为200,高度为500,它按比例动态生成宽高200px图片的时候,让其多余的高度或宽度直接裁切掉,我想表达的就是这个意思
-------------------------------

$filename= $_GET['filename'];
$width = $_GET['width'];
$height = $_GET['height'];
$path="img/"; //finish in "/"4399_17315873250.jpg
// Content type
header('Content-type: image/jpeg');
// Get new dimensions
list($width_orig, $height_orig) = getimagesize($path.$filename);
 
$dst_scale = $height/$width; //目标图像长宽比
$src_scale = $height_orig/$width_orig; // 原图长宽比
 
if ($src_scale>=$dst_scale){  // 过高
    $w = intval($width_orig);
    $h = intval($dst_scale*$w);
 
    $x = 0;
    $y = ($height_orig - $h)/2;
} else { // 过宽
    $h = intval($height_orig);
    $w = intval($h/$dst_scale);
 
    $x = ($width_orig - $w)/2;
    $y = 0;
}

// 剪裁
$source=imagecreatefromjpeg($path.$filename);
$croped=imagecreatetruecolor($w, $h);
imagecopy($croped, $source, 0, 0, $x, $y, $width_orig, $height_orig);
 
// 缩放
$scale = $width / $w;
$image_p = imagecreatetruecolor($width, $height);
$final_w = intval($w * $scale);
$final_h = intval($h * $scale);
imagecopyresampled($image_p, $croped, 0, 0, 0, 0, $final_w,$final_h, $w, $h);

// Output
imagejpeg($image_p, null, 100);
// Imagedestroy
imagedestroy ($image_p);
-------------------------------
引用 3 楼 hongmei85 的回复:

$filename= $_GET['filename'];
$width = $_GET['width'];
$height = $_GET['height'];
$path="img/"; //finish in "/"4399_17315873250.jpg
// Content type
header('Content-type: image/jpeg');
// Get new dimensions
list($width_orig, $height_orig) = getimagesize($path.$filename);
 
$dst_scale = $height/$width; //目标图像长宽比
$src_scale = $height_orig/$width_orig; // 原图长宽比
 
if ($src_scale>=$dst_scale){  // 过高
    $w = intval($width_orig);
    $h = intval($dst_scale*$w);
 
    $x = 0;
    $y = ($height_orig - $h)/2;
} else { // 过宽
    $h = intval($height_orig);
    $w = intval($h/$dst_scale);
 
    $x = ($width_orig - $w)/2;
    $y = 0;
}

// 剪裁
$source=imagecreatefromjpeg($path.$filename);
$croped=imagecreatetruecolor($w, $h);
imagecopy($croped, $source, 0, 0, $x, $y, $width_orig, $height_orig);
 
// 缩放
$scale = $width / $w;
$image_p = imagecreatetruecolor($width, $height);
$final_w = intval($w * $scale);
$final_h = intval($h * $scale);
imagecopyresampled($image_p, $croped, 0, 0, 0, 0, $final_w,$final_h, $w, $h);

// Output
imagejpeg($image_p, null, 100);
// Imagedestroy
imagedestroy ($image_p);


谢谢,有个问题是我把$source=imagecreatefromjpeg($path.$filename);改为$source=imagecreatefromgif($path.$filename);然后调用了一张gif动态图片,虽然能缩略图,但是动画丢失了,大神能帮忙让动态图片保持动画不丢失吗
-------------------------------
1、你代码已经能满足哦你的要求
2、动态图片需一帧帧处理后组装
-------------------------------
引用 5 楼 xuzuning 的回复:
1、你代码已经能满足哦你的要求
2、动态图片需一帧帧处理后组装


好的,谢谢版主和楼上朋友的回复

推荐阅读

热门内容

php接收post数据并写入mysql问

求专家解答:php如何接收远程post过...

php 旋转图片黑底的问题

php 旋转图片后变成黑底的问题。如何保...

SQL语句有点繁琐,有没有好办法封装一下

               ...

如何实现在微信公众号被关注时自动回复多条

就是怎么实现关注时 回复多条信息  就像...

求一个算法

PHP的异步值传递保存问题

接收页面的PHP$fun=new fun...

做了一个考勤表,逻辑出现了问题

                

关于连接sql server 2008

请问我的是window7系统,php7....

微信群发功能如何实现

百度找了些,但都用不好,看一些评论说现在...

php插件Xajax使用方法详解

Xajax是PHP一个不用刷新或者跳到其...

最新内容

调用静态类报空指针,求解

class LoanUtil    @Autowired     public ...

两个实体类转换异常如何解决

java.lang.ClassCastException: com.finego...

新手上路 求罩

如果我   String  str =" , , BS_STATIC_DATA,...

tomcat 部署项目访问404

公司买了一个项目,原本可以访问,自己重新部署就404了他原来的配置

求教一段scala代码,晕菜了,初学

package testimport scala.io.Sourceclass ...

创建maven module失败

怎么回事啊?什么情况呢?----------------------------...

spring配置出错

在配置spring配置文件后进行单元测试时报错,是不是jdk版本和spring版...

jdk1.8和jdk1.7中HashMap实现了Map.Entry接口的静态内部类的方法名为什么不同?

本帖最后由kai_12于2017-09-1120:08:16编辑今天学习Hash...

明明有分号,怎么还提示没有分号

-------------------------------这里是说明你程序写...

求修改一段php代码

求修改一下这个php代码,让动态生成的缩略图固定高宽,拉伸不变形,不留空白

关于自定义jar包引入第三方jar包的问题

我在写一个web项目的时候,遇到了这个问题。我自定义的一些工具被我打成jar包然...

php curl连接怎么加参数进去

jsp用ajax提交form表单

没接触过ajax,找了网上的例子试了下。但点了提交没有值传回来,不知道哪里出错了...

php curl怎么提取文件内容,本人小白,麻烦大神解释一下谢谢

后台代码

关于HQL的一个报错

本帖最后由zxy16305于2017-09-0809:59:07编辑在bean中...

关于微博等第三方登陆接口

各位大神,我在用微博登陆网站时,用了微博的demo,能够实现登陆,但是有几个问题...

深圳IT小白找工作可以这么难吗?

        在各个招聘网上看到的招聘不是什么不要工作经验就是什么包吃住还有就...

关于静态static的疑惑

1.int f(int n){static int i = 1;n += i;i...

请问在Eclipse创建Layout如何调用真机测试呀?

如图,本人刚入门安卓,安装也是折腾了好久才安装完,实在不想用里面的模拟器...开...

想做一个只接收数据的客户端,服务器是一个不断无条件发送数据的服务器,该怎么办?

import java.io.BufferedReader;import jav...