图片裁剪+缩略图的处理程序

处理方法是:
1.当原图的宽或高任一比规定的尺寸小,只进行等比缩略处理,
2.当原图的宽与高都比规定尺寸大,先进行等比缩略处理,然后算出居中位置进行裁剪

<?php
/*
*        $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);
}

}
?>

时间: 2024-11-01 16:00:25

图片裁剪+缩略图的处理程序的相关文章

jQuery + HttpHandler 实现图片裁剪

正文:为了使层次分明及便于阅读,  整个解决方案如下: 其中BitmapCutter.Core是图片的服务器端处理程序, 类图为: 简单说明下, 更多说明可查看源码注释 : Cutter为裁剪对象, 用于存储客户端通过AJAX提交的数据. Helper为图片处理类, 包括图片翻转(RotateImage()), 图片裁剪(GenerateBitmap()). Callback为服务器端图片处理类, 通过使用Cutter封装客户端AJAX提交的数据, 然后调用Helper中的方法来完成图片处理.

给图片生成缩略图和加版权的类

缩略图 给图片生成缩略图和加版权的类 最近几天看了一下PHP的图片处理方面的功能,以前这方面的需求比较少,也就没怎么看,最近有空看了一下.感觉图片处理一些简单的功能还可以,复杂的就算了,GD库都2.0.1了,还是不支持中文,看了几篇文章,想使用中文只能先将GB2312转换成UNICODE再写入图片,太麻烦了,索性只使用英文算了. 在图像生成部分可以定义图片的最大高,宽,比较适用于新闻及相册等系统. GD2.0.1在图片处理上有很大提高,我试了下imageCopyResized和imageCopy

PHP给图片生成缩略图和加版权的类

最近几天看了一下PHP的图片处理方面的功能,以前这方面的需求比较少,也就没怎么看,最近有空看了一下.感觉图片处理一些简单的功能还可以,复杂的就算了,GD库都2.0.1了,还是不支持中文,看了几篇文章,想使用中文只能先将GB2312转换成UNICODE再写入图片,太麻烦了,索性只使用英文算了. 在图像生成部分可以定义图片的最大高,宽,比较适用于新闻及相册等系统. GD2.0.1在图片处理上有很大提高,我试了下imageCopyResized和imageCopyResampled,后者处理的图片明显

jQuery+HttpHandler实现图片裁剪(适用于论坛,SNS)

序言: 上次发了几个jQuery的插件和些心得, 很多园友(也许是自己站上的)发邮件希望能提供更多的源码, 正好这次有个同学希望在自己的坛子上挂个图片裁剪以生成头像的功能, 于是帮忙写了这么个插件.也许很多园友用得着, 就一并发上来啦. 正文: 为了使层次分明及便于阅读, 整个解决方案如下: 其中BitmapCutter.Core是图片的服务器端处理程序, 类图为:

ps图片裁剪技巧

数码相机拍摄的照片需要通过裁剪得到良好的构图和合适的大小.裁剪工具可以简单地完成这些任务.不过有的朋友可能不知道,裁剪照片的方法有很多,不仅仅是裁剪工具的专利. "裁剪工具" 的基础用法 裁剪工具可以用来将图片裁大或者裁小,修正歪斜的照片. 1: 我们首先学习裁剪工具的基础用法.使用图1所示的裁剪工具(标示1处),可以看到属性栏(标示2处)在默认情况下是没有输入任何数值的,我们可以在图中框 选出一块区域,这块区域的周围会被变暗,以显示出裁来的区域.裁剪框的周围有8个控制点,利用它,我们

ASP固定比例裁剪缩略图的方法_应用技巧

一般生成缩略图的方法有两种: 第一种:缩放成固定大小的小图片 第二种:缩放成等比例的小图片 第一种方法的缺点是,会使图片变形,例如一个身材苗条的MM变成一个胖MM 第二种方法的缺点是,如果图片是放在一个表格中显示,并且图片宽高比和这个表格不同,就不能充满整个表格,留下空隙,不好看 这里介绍的方法是"固定比例裁剪",使用aspjpeg组件,也就是说,生成的缩略图宽高比是固定的,但是不会变形.如果原图的宽高比大于设定的宽高比,就会自动剪掉左右两旁多余的图:如果原图的宽高比小于设定的宽高比,

ASP固定比例裁剪缩略图的方法

一般生成缩略图的方法有两种: 第一种:缩放成固定大小的小图片 第二种:缩放成等比例的小图片 第一种方法的缺点是,会使图片变形,例如一个身材苗条的MM变成一个胖MM 第二种方法的缺点是,如果图片是放在一个表格中显示,并且图片宽高比和这个表格不同,就不能充满整个表格,留下空隙,不好看 这里介绍的方法是"固定比例裁剪",使用aspjpeg组件,也就是说,生成的缩略图宽高比是固定的,但是不会变形.如果原图的宽高比大于设定的宽高比,就会自动剪掉左右两旁多余的图:如果原图的宽高比小于设定的宽高比,

用ASPJPEG组件制作图片的缩略图和加水印

aspjpeg|缩略图 ASPJPEG是Persits出品的共享软件,试用期为30天,您可以在这里下载:http://www.persits.com/aspjpeg.exe.最新版本号是1.3ASPJPEG是一款功能相当强大的图象处理组件,用它可以轻松地做出图片的缩略图和为图片加上水印功能.下面简单介绍一下使用方法:您先要执行下载得到的exe文件,安装该组件1.为图片制作缩略图 <% ' 建立实例Dim Jpeg,PathSet Jpeg = Server.CreateObject("Pe

javascript 图片裁剪技巧

学php gd库 看到有图片裁剪 正好整一个 嗯 其实挺简单的 php版,代码如下: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Resize&l