PHP图片裁剪与缩放示例(无损裁剪图片)

本文介绍了PHP图片裁剪与缩放示例,废话不多少,具体代码如下:

/* *exif_imagetype -- 判断一个图像的类型 *功能说明:函数功能是把一个图像裁剪为任意大小的图像,并保持图像不变形 *参数说明:输入 需要处理图片的 文件名,生成新图片的保存文件名,生成新图片的宽,生成新图片的高 */ // 获得任意大小图像,不足地方拉伸,不产生变形,不留下空白 function image_resize($src_file, $dst_file, $new_width, $new_height) { $new_width = intval($new_width); $new_height = intval($new_width); if ($new_width < 1 || $new_height < 1) { echo "params width or height error !"; exit(); } if (!file_exists($src_file)) { echo $src_file . " is not exists !"; exit(); } // 图像类型 $type = exif_imagetype($src_file); $support_type = array(IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_GIF); if (!in_array($type, $support_type, true)) { echo "this type of image does not support! only support jpg , gif or png"; exit(); } //Load image switch($type) { case IMAGETYPE_JPEG : $src_img = imagecreatefromjpeg($src_file); break; case IMAGETYPE_PNG : $src_img = imagecreatefrompng($src_file); break; case IMAGETYPE_GIF : $src_img = imagecreatefromgif($src_file); break; default : echo "Load image error!"; exit(); } $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) || ($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); $inter_img = imagecreatetruecolor($inter_w, $inter_h); //var_dump($inter_img); imagecopy($inter_img, $src_img, 0, 0, 0, 0, $inter_w, $inter_h); // 生成一个以最大边长度为大小的是目标图像$ratio比例的临时图像 // 定义一个新的图像 $new_img = imagecreatetruecolor($new_width, $new_height); //var_dump($new_img);exit(); imagecopyresampled($new_img, $inter_img, 0, 0, 0, 0, $new_width, $new_height, $inter_w, $inter_h); switch($type) { case IMAGETYPE_JPEG : // 存储图像 imagejpeg($new_img, $dst_file, 100); break; case IMAGETYPE_PNG : imagepng($new_img, $dst_file, 100); break; case IMAGETYPE_GIF : imagegif($new_img, $dst_file, 100); break; default : break; } }// end if 1 // 2 目标图像 的一个边大于原图,一个边小于原图 ,先放大平普图像,然后裁剪 // =if( ($ratio_w < 1 && $ratio_h > 1) || ($ratio_w >1 && $ratio_h <1) ) else { $ratio = $ratio_h > $ratio_w ? $ratio_h : $ratio_w; //取比例大的那个值 // 定义一个中间的大图像,该图像的高或宽和目标图像相等,然后对原图放大 $inter_w = (int)($w * $ratio); $inter_h = (int)($h * $ratio); $inter_img = imagecreatetruecolor($inter_w, $inter_h); //将原图缩放比例后裁剪 imagecopyresampled($inter_img, $src_img, 0, 0, 0, 0, $inter_w, $inter_h, $w, $h); // 定义一个新的图像 $new_img = imagecreatetruecolor($new_width, $new_height); imagecopy($new_img, $inter_img, 0, 0, 0, 0, $new_width, $new_height); switch($type) { case IMAGETYPE_JPEG : // 存储图像 imagejpeg($new_img, $dst_file, 100); break; case IMAGETYPE_PNG : imagepng($new_img, $dst_file, 100); break; case IMAGETYPE_GIF : imagegif($new_img, $dst_file, 100); break; default : break; } }// if3 }// end function //输出新图片 image_resize('test.jpg', 'demo.jpg', '1200px', '1200px');

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

时间: 2024-10-26 06:22:22

PHP图片裁剪与缩放示例(无损裁剪图片)的相关文章

php使用imagick模块实现图片缩放、裁剪、压缩示例_php实例

PHP 使用Imagick模块 缩放,裁剪,压缩图片 包括gif图片 缩放 裁剪 复制代码 代码如下: /**  * 图片裁剪  * 裁剪规则:  *   1. 高度为空或为零   按宽度缩放 高度自适应  *   2. 宽度为空或为零  按高度缩放 宽度自适应  *      3. 宽度,高度到不为空或为零  按宽高比例等比例缩放裁剪  默认从头部居中裁剪  * @param number $width  * @param number $height  */ public function

基于JQuery实现的图片自动进行缩放和裁剪处理

 页面加载后,对不合比例的图片自动进行缩放和裁剪处理,兼容图像已在缓存或不在缓存的情况,基于JQuery 其实很早就想写一个这样的效果,至于原因?进来这个笔记,我相信你懂的. 一般门户网站,缺少不了大量的图片展示,而为了网站美观,图片又有各种不同尺寸,专业的网站编辑人员,会把图片处理成等比例的图片再上传,把网站弄得很好看,可惜,我想说,我遇到90%的网站编辑人员都是不专业的. 为了不让网站编辑人员毁掉我的心血,我决定做这样一个事情.   1.首先,在CSS里对图片定义好大小,如果JS不执行,就能

PHP实现图片裁剪与缩放的几种方法

方法一  代码如下 复制代码 图片裁剪缩放函数,支持方位裁剪和自定义坐标裁剪     /**      * 图片裁剪函数,支持指定定点裁剪和方位裁剪两种裁剪模式      * @param <string>  $src_file       原图片路径      * @param <int>     $new_width      裁剪后图片宽度(当宽度超过原图片宽度时,去原图片宽度)      * @param <int>     $new_height     裁剪

thinkPHP框架实现图像裁剪、缩放、加水印的方法

本文实例讲述了thinkPHP框架实现图像裁剪.缩放.加水印的方法.分享给大家供大家参考,具体如下: ThinkPHP 图片处理函数,需要文字水印字体,可在windows下 控制面板 > 大图标(右上角) > 字体 找到需要的字体 /** * 图像的裁剪.缩放.加水印 * @param string $path 路径 * @param int $width 裁剪的宽度/限制的高度或宽度,当有$height值时此值为图片的宽度,否则为限制的宽度或高度 * @param int $height [

JS控制图片等比例缩放的示例代码

 本篇文章主要是对JS控制图片等比例缩放的示例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 代码如下: <SCRIPT language="JavaScript"> function DrawImage(ImgD,FitWidth,FitHeight){        var image=new Image();        image.src=ImgD.src;        if(image.width>0 && image.he

android-安卓图片上传生成缩略图,裁剪后背景为黑色。

问题描述 安卓图片上传生成缩略图,裁剪后背景为黑色. 用户在上传图片后图片可能会自定义,不一定为最大,如果为黑色的话,会影响用户体验. 请问我要如何做成透明的. 解决方案 http://zhidao.baidu.com/link?url=vqPoNNcVjXD2Lsb57JMZSuJd3gH8rfpJpr9iItIPZ7_PQ__8-rSho89hBSKpKCj--1e9x5S3oQpcc2zHXk1H-QaXFhA4BtI-X6GJdJxGeOK 解决方案二: 裁剪保存的时候注意压缩质量,最好

JS图片等比例缩放方法完整示例_javascript技巧

本文实例讲述了JS图片等比例缩放方法.分享给大家供大家参考,具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>

PHP实例————图片等比例缩放功能

在网站开发的过程中,经常要对一些图片进行一些处理,比如说缩放,裁剪,加水印等等.当然这些功能不仅仅可以用在开发网站的过程中,平时需要对图片做一些处理的时候,把这个功能封装到函数中去,要处理图片的时候,根据自己的要求在函数中添加需要的参数不就搞定了么.虽说这个对于小白来说可能一下子上来就点困难,但是一回生二回熟嘛.好了,进入正题.今天分享一个图像等比例缩放的函数.需要中的同学可以稍作修改,然后自己拿去用,就省的自己写了(大神请无视). 1.首先,了解一下图片缩放中多需要的函数 有不太明白的可以用p

web图片同比例缩放的问题

问题描述 web图片同比例缩放的问题 由于上传的图片大小及比例都不同,想要图片显示成固定高度和宽度,而且是保持同比例缩放的,各位大神,怎么解决啊?谢啦 解决方案 服务器端进行等比率裁剪,自己百度下使用的语言,都有相关的代码的.或者使用waterfall此类的插件,可以自动帮你布局图片