PHP生成缩略图(2)--等比缩略图

分析:

当原图是横屏或竖屏的时候,希望缩略图会保持原来的比例缩放,不改变原图的完整性,即等比缩放!

此时只需确定原图的宽高,以及目标图的最大宽高,比较目标图的宽高比例与原图的宽高比例的大小,以此来判断原图是横屏或竖屏来确定以高或宽为标准即可!

代码如下:

//求目标图片的宽高
if ($max_width/$max_height < $src_width/$src_height) {

    $dst_w = $max_width;    //以宽为标准
    $dst_h = $max_width * $src_height/$src_width;
}else{

    $dst_h = $max_height;   //以高为标准
    $dst_w = $max_height * $src_width/$src_height;
}

完整代码如下:

<?php

//目标图片最大宽高
$max_width = 300;
$max_height = 300;

//创建一个真彩色的图像,支持的颜色数较多
$dst = imagecreatetruecolor($max_width, $max_height); //目标图宽高
$src = imagecreatefromjpeg(‘./01.jpg‘); //源图

$src_width = imagesx($src);    //源图的宽度
$src_height = imagesy($src);    //源图的高度

//求目标图片的宽高
if ($max_width/$max_height < $src_width/$src_height) {

    //横屏图片以宽为标准
    $dst_w = $max_width;
    $dst_h = $max_width * $src_height/$src_width;
}else{

    //竖屏图片以高为标准
    $dst_h = $max_height;
    $dst_w = $max_height * $src_width/$src_height;
}

//在目标图上显示的坐标位置
$dst_x = (int)(($max_width-$dst_w)/2);
$dst_y = (int)(($max_height-$dst_h)/2);

//生成缩略图
imagecopyresampled($dst,$src,$dst_x,$dst_y,0,0,$dst_w,$dst_h,$src_width,$src_height);

//输出到浏览器
header(‘content-type:image/png‘);
imagepng($dst);

//销毁图片资源
imagedestroy($dst);
imagedestroy($src);

 ?>

结果如下:

竖屏图片

横屏图片:

时间: 2024-11-05 23:19:14

PHP生成缩略图(2)--等比缩略图的相关文章

php 图片操作类,支持生成缩略图,添加水印,上传缩略图

<?php class Image {     //类开始     public $originimage = ""; //源图片文件地址     public $imageext = ""; //源图片格式     public $thumbimage = ""; //缩略图文件存放地址     public $thumb_maxwidth = 1440; //缩略图最大宽度     public $thumb_maxheight = 9

[转]图片处理函数(自适应缩略图datatable中添加缩略图像)

/// <summary> /// 为DataTable指定行中的生成缩略图 /// </summary> /// <param name="dataTable">数据源</param> /// <param name="dataTableImageColumnName">要生成缩略图的数据源的列名</param> /// <param name="appendSmallPicC

利用FFmpeg生成视频缩略图 2.1.8

1.下载FFmpeg文件包,解压包里的\bin\下的文件解压到 D:\ffmpeg\ 目录下. 下载地址 http://ffmpeg.zeranoe.com/builds/win32/static/ D:\ffmpeg 目录追加到系统 PATH 环境变量中; 2.运行 copy_to_ffmpeg.bat, 把 echoc.exe LED_font.ttf 文件拷贝到 D:\ffmpeg\ 目录下. echoc.exe 在CMD控制台环境下输出彩色字符; LED_font.ttf 用于输出时间戳

利用FFmpeg生成视频缩略图 2.3.1

1.下载FFmpeg文件包,解压包里的\bin\下的文件解压到 D:\ffmpeg\ 目录下. 下载地址 http://ffmpeg.zeranoe.com/builds/win32/static/ D:\ffmpeg 目录追加到系统 PATH 环境变量中; 2.运行 copy_to_ffmpeg.bat, 把 echoc.exe LED_font.ttf 文件拷贝到 D:\ffmpeg\ 目录下. echoc.exe 在CMD控制台环境下输出彩色字符; LED_font.ttf 用于输出时间戳

上传图片生成缩略图

上传图片生成缩略图,原图和缩略图地址一样的时候缩略图会把原图覆盖掉 /// <summary> /// 生成缩略图 /// </summary> /// <param name="originalImagePath">源图路径(物理路径)</param> /// <param name="thumbnailPath">缩略图路径(物理路径)</param> /// <param name=

生成缩略图的PHP上传图片类

做图片类网站的朋友可能都有自己上传图片的方式方法.这里给大家介绍一个php上传图片类,它可以验证上传文件是否为图片,图片的格式是否是网站所接受的:还可以生成指定大小的缩略图.具体方法如下所示: <?phpclass UploadComponent { var $imageData = array(); var $destinationDir = NULL; var $thumbDestinationDir = NULL; var $imageSize = array(500,500); var

使用超酷的jQuery缩略图生成插件NailThumb制作漂亮的缩略图web应用

在线演示1 本地下载 大家在网站开发和web应用中常常需要处理图片,因为用户上传的图片往往尺寸大小各不相同,如何能够生成统一尺寸的缩略图往往是让我们头疼的问题,常规的方式基本都是使用后台程序PHP,JSP等处理上传后的图片,针对网站或者应用具体需要来切割指定大小的缩略图.主要问题在于你需要开发对应后台相关程序,并且你一旦指定了缩略图大小后,以后如果希望能够随时修改的话,往往需要对后台代码进行修改,非常麻烦!今天我们将介绍一款超强的jQuery缩略图生成插件 - NailThumb,使用这个插件可

PHP生成缩略图、验证码类封装

1 <?php 2 /*如何知道图片的类型和大 3 * 利用getimagesize(),获得以下属性 4 Array 5 ( 6 [0] => 533 //宽 7 [1] => 300 //高 8 [2] => 2 //图片类型 jpg 9 [3] => width="533" height="300" 10 [bits] => 8 11 [channels] => 3 12 [mime] => image/jpeg

PHP 图片处理,生成缩略图、圆形图片

<?php /* * name:娄喜贺 */ class MyUpload{ var $saveName;// 保存名 var $tmpPath;// 临时保存路径 var $savePath;// 保存路径 var $fileFormat = array('gif','jpg','png','doc','application/octet-stream');// 文件格式&MIME限定 var $overwrite = 0;// 覆盖模式 var $maxSize = 0;// 文件最大字

等比例缩放生成缩略图

    ///    /// 等比例缩放生成缩略图    ///    /// 源图路径(物理路径)    /// 缩略图宽度    /// 缩略图高度(依缩略图宽度等比例计算所得)    public void MakeThumbnail(String originalImagePath, Int32 width, Int32 height)    {        //获取原始图片        using (System.Drawing.Image originalImage = Syst