使用gd库实现php服务端图片裁剪和生成缩略图

 一般用户上传头像时,都会让用户自行裁剪图片。那么php怎么实现这个功能呢?php中裁剪图片主要使用gd库的imagecopyresampled方法

裁剪示例:

 
 
最终裁剪成的图片:
 

 
其中虚线框内就是要裁剪出来的图片,最终保存成100宽的图片。代码如下:
 
 代码如下:
$src_path = '1.jpg';
//创建源图的实例
$src = imagecreatefromstring(file_get_contents($src_path));
 
//裁剪开区域左上角的点的坐标
$x = 100;
$y = 12;
//裁剪区域的宽和高
$width = 200;
$height = 200;
//最终保存成图片的宽和高,和源要等比例,否则会变形
$final_width = 100;
$final_height = round($final_width * $height / $width);
 
//将裁剪区域复制到新图片上,并根据源和目标的宽高进行缩放或者拉升
$new_image = imagecreatetruecolor($final_width, $final_height);
imagecopyresampled($new_image, $src, 0, 0, $x, $y, $final_width, $final_height, $width, $height);
 
//输出图片
header('Content-Type: image/jpeg');
imagejpeg($new_image);
 
imagedestroy($src);
imagedestroy($new_image);
 
 
 
其实如果坐标为(0,0),裁剪区域的宽高和源图的宽高一致,那么就是生成缩略图的功能了。
 
总结
 
这里只列出了php裁剪图片的示例,属于服务端的功能。如果客户端有需要,推荐一个jquery的插件imageAreaSelect,兼容性非常不错。
 

时间: 2024-09-20 19:28:36

使用gd库实现php服务端图片裁剪和生成缩略图的相关文章

使用gd库实现php服务端图片裁剪和生成缩略图功能分享_php实例

裁剪示例: 最终裁剪成的图片: 其中虚线框内就是要裁剪出来的图片,最终保存成100宽的图片.代码如下: 复制代码 代码如下: $src_path = '1.jpg';//创建源图的实例$src = imagecreatefromstring(file_get_contents($src_path)); //裁剪开区域左上角的点的坐标$x = 100;$y = 12;//裁剪区域的宽和高$width = 200;$height = 200;//最终保存成图片的宽和高,和源要等比例,否则会变形$fi

php进行图片裁剪及生成缩略图程序源代码

程序|源代码|缩略图 处理方法是:1.当原图的宽或高任一比规定的尺寸小,只进行等比缩略处理,2.当原图的宽与高都比规定尺寸大,先进行等比缩略处理,然后算出居中位置进行裁剪 以下是源代码:<?php /* *        $o_photo 原图路径 *        $d_photo 处理后图片路径 *        $width   定义宽 *        $height  定义高 *        调用方法  cutphoto("test.jpg","temp.j

按照比例改变图片大小(非生成缩略图)

  <? /**      按照比例改变图片大小(非生成缩略图)      @param string $img 图片路径      @param int $max_w 最大缩放宽      @param int $max_h 最大缩放高  */  function chImageSize ($img,$max_w,$max_h)  {      $size = @getimagesize($img);          $w = $size[0];          $h     =    $

支持png透明图片的php生成缩略图类分享

 这篇文章主要介绍了支持png透明图片的php生成缩略图类分享,本文代码基于GD2图形库,实现支持png透明图片生成缩略图,需要的朋友可以参考下     注:此功能依赖GD2图形库 最近要用php生成缩略图,在网上找了一下,发现了这篇文章:PHP生成图片缩略图 试用了一下后,发现有这样几个问题: 1.png图片生成的缩略图是jpg格式的 2.png图片生成的缩略图没有了透明(半透明)效果(填充了黑色背景) 3.代码语法比较老 因此,在这个版本的基础上简单修改优化了一下. PHP生成缩略图类 ?

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

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

Go语言图片处理和生成缩略图的方法_Golang

本文实例讲述了Go语言图片处理和生成缩略图的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package main import (     "fmt"     "os"     "image"     "image/color"     "image/draw"     "image/jpeg" ) func main() {     f1, err := os

C#图片压缩、生成缩略图、添加水印模块

  C#图片处理工具类,可以压缩JPG图像,图片自动生成缩略图,为图片添加水印效果等,返回高清缩略图,得到最佳的图片比例缩放尺寸,并获取图片类型等,类代码如下: view sourceprint?001using System; 002using System.Collections.Generic; 003using System.Linq; 004using System.Text; 005using System.IO; 006using System.Drawing; 007using

支持png透明图片的php生成缩略图类分享_php技巧

注:此功能依赖GD2图形库 最近要用php生成缩略图,在网上找了一下,发现了这篇文章:PHP生成图片缩略图 试用了一下后,发现有这样几个问题: 1.png图片生成的缩略图是jpg格式的 2.png图片生成的缩略图没有了透明(半透明)效果(填充了黑色背景) 3.代码语法比较老 因此,在这个版本的基础上简单修改优化了一下. PHP生成缩略图类 <?php /* * desc: Resize Image(png, jpg, gif) * author: 十年后的卢哥哥 * date: 2014.11.

asp.net图片上传生成缩略图的注意事项_实用技巧

bitmap.Save(imgPath,ImageFormat.Jpeg);   //这是保存缩略图的一段代码,其中的ImageFormat.Jpeg一定不能省略,即使你保存的文件本来就是jpg格式的,也不能去掉.因为如果去掉的话,生成的缩略图比原始图片还要大! //另外,imgPath必须首先创建,否则会产生GDI+的一般性错误. path=System.Web.HttpContext.Current.Server.MapPath(path); 使用if(!System.IO.Director