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

我们经常会遇到对图像进行裁剪动作,下面这段代码就是裁剪的源码

处理方法是:

1.当原图的宽或高任一比规定的尺寸小,只进行等比缩略处理,

2.当原图的宽与高都比规定尺寸大,先进行等比缩略处理,然后算出居中位置进行裁剪

/*
 *        $o_photo 原图路径
 *        $d_photo 处理后图片路径
 *        $width   定义宽
 *        $height  定义高
 *        调用方法  cutphoto("test.jpg","temp.jpg",256,146);
 */
function cutphoto($o_photo, $d_photo, $width, $height) {
    $temp_img = imagecreatefromjpeg($o_photo);
    $o_width = imagesx($temp_img);                                //取得原图宽
    $o_height = imagesy($temp_img);                                //取得原图高
//判断处理方法
    if ($width > $o_width || $height > $o_height) {        //原图宽或高比规定的尺寸小,进行压缩
        $newwidth = $o_width;
        $newheight = $o_height;
        if ($o_width > $width) {
            $newwidth = $width;
            $newheight = $o_height * $width / $o_width;
        }
        if ($newheight > $height) {
            $newwidth = $newwidth * $height / $newheight;
            $newheight = $height;
        }
        //缩略图片
        $new_img = imagecreatetruecolor($newwidth, $newheight);
        imagecopyresampled($new_img, $temp_img, 0, 0, 0, 0, $newwidth, $newheight, $o_width, $o_height);
        imagejpeg($new_img, $d_photo);
        imagedestroy($new_img);
    } else {                                                                                //原图宽与高都比规定尺寸大,进行压缩后裁剪
        if ($o_height * $width / $o_width > $height) {        //先确定width与规定相同,如果height比规定大,则ok
            $newwidth = $width;
            $newheight = $o_height * $width / $o_width;
            $x = 0;
            $y = ($newheight - $height) / 2;
        } else {                                                                        //否则确定height与规定相同,width自适应
            $newwidth = $o_width * $height / $o_height;
            $newheight = $height;
            $x = ($newwidth - $width) / 2;
            $y = 0;
        }
        //缩略图片
        $new_img = imagecreatetruecolor($newwidth, $newheight);
        imagecopyresampled($new_img, $temp_img, 0, 0, 0, 0, $newwidth, $newheight, $o_width, $o_height);
        imagejpeg($new_img, $d_photo);
        imagedestroy($new_img);
        $temp_img = imagecreatefromjpeg($d_photo);
        $o_width = imagesx($temp_img);                                //取得缩略图宽
        $o_height = imagesy($temp_img);                                //取得缩略图高
        //裁剪图片
        $new_imgx = imagecreatetruecolor($width, $height);
        imagecopyresampled($new_imgx, $temp_img, 0, 0, $x, $y, $width, $height, $width, $height);
        imagejpeg($new_imgx, $d_photo);
        imagedestroy($new_imgx);
    }
}
cutphoto("http://tp3.sinaimg.cn/1700691210/180/1280120708/1", "temp1.jpg", 100, 100);
cutphoto("http://hhcf.tk/img/avatar_big/1318072877.jpg", "temp2.jpg", 100, 100);

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

时间: 2024-10-12 11:03:39

php进行图片裁剪及生成缩略图程序源代码的相关文章

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;// 文件最大字

php获取远程图片url生成缩略图的方法

getimg.php <?php /** * *函数:调整图片尺寸或生成缩略图 *返回:True/False *参数: * $Image 需要调整的图片(含路径) * $Dw=450 调整时最大宽度;缩略图时的绝对宽度 * $Dh=450 调整时最大高度;缩略图时的绝对高度 * $Type=1 1,调整尺寸; 2,生成缩略图 */ $phtypes=array('img/gif', 'img/jpg', 'img/jpeg', 'img/bmp', 'img/pjpeg', 'img/x-png

C#生成缩略图不失真的方法

最近一个手持机项目有个需求,因为物料图片的大小不一,有的很大显示到手持机上会只显示图片的一部分,界面显得非常乱,很影响客户的体验度.所以需要一个方法,将上传到服务器上的图片进行处理,按照一定的大小格式进行保存. 下面提供了两种获取图片缩略图的方法,供大家参考. 方法一:通过调用Image对象的自带方法GetThumbnailImage()进行图片转换 /// <summary> /// 生成缩略图重载方法,返回缩略图的Image对象 /// </summary> /// <p

使用ThinkPHP实现生成缩略图及显示

首先了解父类Image.class.php(ThinkPHP/Library/Think/Image.class.php)中的一些函数 1:open() 打开被处理的图片 2:thumb() 生成缩略图 默认1等比缩放  (其中2,3,4,5,6代表的含义参见父类文件Image.class.php) 3:save() 缩略图到服务器 生成缩略图步骤分以下四步 * 1.实例化 * 2.打开图片open() * 3.生成缩略图thumb() 默认等比缩放 * 4.保存save() 控制器代码: //

java图片裁剪处理工具类代码

剪切前:  原文:java图片裁剪处理工具类代码 源代码下载地址:http://www.zuidaima.com/share/1550463351786496.htm 剪切后:  package com.zuidaima.zhangjun.image; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import

黄聪:C#图片处理封装类(裁剪、缩放、清晰度、加水印、生成缩略图)有示例(转)

C#图片处理示例(裁剪,缩放,清晰度,水印) 吴剑 2011-02-20 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian/ 前言 需求源自项目中的一些应用,比如相册功能,通常用户上传相片后我们都会针对该相片再生成一张缩略图,用于其它页面上的列表显示.随便看一下,大部分网站基本都是将原图等比缩放来生成缩略图.但完美主义者会发现一些问题,比如显示排版时想让相片缩略图列表非常统一.整齐.和美观,比如要求每张缩略图大小固定为120 x 90且不拉伸变形怎么办?再

图片生成缩略图

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; using System.Drawing; using System.IO; using System.Drawing.Drawing2D; using System.Drawing.Imaging; namespace Common { /// <summary>    

js无刷新上传图片,服务端有生成缩略图,剪切图片,iphone图片旋转判断功能

html: <form action="<{:AppLink('circle/uploadimg')}>" id="imageform" method="post" enctype="multipart/form-data">     <input name="photoimg" type="file" id="xwzx_f" style

[原创]超强C#图片上传,加水印,自动生成缩略图源代码

<%@ Page Language=“C#“ AutoEventWireup=“true“ %> <%@ Import Namespace=“System“ %> <%@ Import Namespace=“System.IO“ %> <%@ Import Namespace=“System.Net“ %> <%@ Import NameSpace=“System.Web“ %> <%@ Import NameSpace=“Legalsof