『壹』 php如何实现图片的裁剪

php中裁剪图片主要使用gd库的imageresampled方法

$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);
imageresampled($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);

『贰』 php 上传图片,自动按比例只求宽裁剪,请问怎么做呢

我只能提供步骤和思路,不要想直接拿代码。。。
第一步:判断图片宽高,关键函数getimagesize($fullpath);如果超过宽度限制,根据当前宽高比例,算出压缩后图片正确的宽高。一点小算法即可。
第二步:把当前图片复制一份,关键函数imagecreatefromjpeg()等,根据图片类型(后缀)不同,函数也稍有区别。
第三步:把刚才复制的备用文件压缩,关键函数ImageCopyResampled或者ImageCopyResized 根据php版本和扩展不同选择
第四步:把生成的缩略图保存成文件,ImageJPEG等相应函数
完成

『叁』 PHP 图片下载本地并进行裁剪

<?php
//剪裁图片
//1,打开图像
//2,创建一个空白的图像
$name="./img/1.jpg";
//cut($name,0,0,200,200);
$x1=289;
$y1=149;
$x2=438;
$y2=257;
cut($name,289,149,438,257);
functioncut($name,$x1,$y1,$x2,$y2){
functiongetinfo($name){

//getimagesize($dname)函数可以动态的获取图片类型,大小,宽度和高度等
$info=getimagesize($name);
$width=$info[0];
$height=$info[1];
$mime=$info['mime'];

switch($mime){
case'image/jpeg':
$res=imagecreatefromjpeg($name);
break;
case'image/gif':
$res=imagecreatefromgif($name);
break;
case'image/png':
$res=imagecreatefrompng($name);
break;
case'image/wbmp':
$res=imagecreatefromwbmp($name);
break;
}
returnarray('width'=>$width,'height'=>$height,'res'=>$res);
}
$info=getinfo($name);

$img=imagecreatetruecolor(($x2-$x1),($y2-$y1));
imagemerge($img,$info['res'],0,0,$x1,$y1,($x2-$x1),($y2-$y1),100);
//header("content-type:image/png");
//imagepng($img);
$ext=pathinfo($name,PATHINFO_EXTENSION);
$rand_name=md5(mt_rand().time()).".".$ext;
switch($ext){
case'jpg':
case'jpeg':
case'jpe':
imagejpeg($img,$rand_name);
break;
case'png':
imagepng($img,$rand_name);
break;
case'gif':
imagegif($img,$rand_name);
break;
case'bmp':
case'wbmp':
imagewbmp($img,$rand_name);
break;
}
//销毁资源
imagedestroy($info['res']);
imagedestroy($img);
}

『肆』 如何实现PHP图片裁剪与缩放

给你段代码吧。上边的是具体的事务处理。下面的是类文件。
////////////////////////////////////////////////////下面开始处理图片压缩问题
$src = "$fileurl";

echo $src;
$image = new Image($src);
$width= $image->getimgwidth();
echo $width."宽度是这些";

if($width>1024){

$coefficient=number_format(1024/$width, 4, '.', '');
echo $coefficient;
$image->percent = $coefficient;
$image->openImage();
$image->thumpImage();
//************************************重新给图片命名
$randname=date("Y").date("m").date("d").date("H").date("i").date("s").rand(100, 999).".".$hz;

echo "<br/>重新命名是这个".$randname;

$fileurl=$fileimgweb.$randname;//重新给数据库里存的图片地址命名
// $image->showImage();
$image->saveImage($fileurl);

}

////////////////////////////////////////////////////图片压缩问题处理结束

--------------------------------------------------------------------------------------

<?php
/**
图片压缩操作类
v1.0
*/
class Image{

private $src;
private $imageinfo;
private $image;
public $percent = 0.5;
public function __construct($src){

$this->src = $src;

}
/**
获取图片的宽度并传输给前台
*/

public function getimgwidth(){

$imgwidth= getimagesize($this->src)[0];
// echo $imgwidth;
return $imgwidth;

}

/**
打开图片
*/
public function openImage(){

list($width, $height, $type, $attr) = getimagesize($this->src);
$this->imageinfo = array(

'width'=>$width,
'height'=>$height,
'type'=>image_type_to_extension($type,false),
'attr'=>$attr
);
$fun = "imagecreatefrom".$this->imageinfo['type'];
$this->image = $fun($this->src);

}
/**
操作图片
*/
public function thumpImage(){

$new_width = $this->imageinfo['width'] * $this->percent;
$new_height = $this->imageinfo['height'] * $this->percent;
$image_thump = imagecreatetruecolor($new_width,$new_height);
//将原图复制带图片载体上面,并且按照一定比例压缩,极大的保持了清晰度
imageresampled($image_thump,$this->image,0,0,0,0,$new_width,$new_height,$this->imageinfo['width'],$this->imageinfo['height']);
imagedestroy($this->image);
$this->image = $image_thump;
}
/**
输出图片
*/
public function showImage(){

header('Content-Type: image/'.$this->imageinfo['type']);
$funcs = "image".$this->imageinfo['type'];
$funcs($this->image);

}
/**
保存图片到硬盘
*/
public function saveImage($fileurl){

imagejpeg($this->image, $fileurl,75);

// $funcs = "image".$this->imageinfo['type'];
// $funcs($this->image,$name.'.'.$this->imageinfo['type']);

}
/**
销毁图片
*/
public function destruct(){

imagedestroy($this->image);
}

}

?>

『伍』 PHP 长方形图片 不变形 裁剪 生成 正方形

$x = (200-150)/2;
imageresampled($thumb, $img_r2, 0, 0, $x, 0, $thumb_w, $thumb_h, 150, 150);

请看imageresampled详细介绍:
imageresampled
(PHP 4 >= 4.0.6, PHP 5)

imageresampled — 重采样拷贝部分图像并调整大小

说明
bool imageresampled ( resource $dst_image, resource $src_image, int $dst_x, int $dst_y, int $src_x, int $src_y, int $dst_w, int $dst_h, int $src_w, int $src_h )

imageresampled() 将一幅图像中的一块正方形区域拷贝到另一个图像中,平滑地插入像素值,因此,尤其是,减小了图像的大小而仍然保持了极大的清晰度。如果成功则返回 TRUE,失败则返回 FALSE。

dst_image 和 src_image 分别是目标图像和源图像的标识符。如果源和目标的宽度和高度不同,则会进行相应的图像收缩和拉伸。坐标指的是左上角。本函数可用来在同一幅图内部拷贝(如果 dst_image 和 src_image 相同的话)区域,但如果区域交迭的话则结果不可预知。

注意: 因为调色板图像限制(255+1 种颜色)有个问题。重采样或过滤图像通常需要多于 255 种颜色,计算新的被重采样的像素及其颜色时采用了一种近似值。对调色板图像尝试分配一个新颜色时,如果失败我们选择了计算结果最接近(理论上)的颜色。这并不总是视觉上最接近的颜色。这可能会产生怪异的结果,例如空白(或者视觉上是空白)的图像。要跳过这个问题,请使用真彩色图像作为目标图像,例如用 imagecreatetruecolor() 创建的。

注意: 本函数需要 GD 2.0.1 或更高版本(推荐 2.0.28 及更高版本)。

『陆』 如何使用PHP动态把JPEG图片切割成几块

<?php
$maxW=100; //准备将图片裁减成的小图的宽

$maxH=100; //准备将图片裁减成的小图的高
$link= "D:/Apache24/htdocs/web/test.jpg";//图片路径,自己修改
$img = imagecreatefromjpeg($link);
list($width, $height, $type, $attr) = getimagesize($link);
$widthnum=ceil($width/$maxW);
$heightnum=ceil($height/$maxH);
$iOut = imagecreatetruecolor ($maxW,$maxH);
//bool image ( resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h )
//将 src_im 图像中坐标从 src_x,src_y 开始,宽度为 src_w,高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上。

for ($i=0;$i < $heightnum;$i++) {
for ($j=0;$j < $widthnum;$j++) {
image($iOut,$img,0,0,($j*$maxW),($i*$maxH),$maxW,$maxH);//复制图片的一部分
imagejpeg($iOut,"D:/Apache24/htdocs/web/img/".$i."_".$j.".jpg"); //输出成0_0.jpg,0_1.jpg这样的格式
}
}
?>
已测试,可以使用。

『柒』 PHP裁剪 动态裁剪框,要求生成固定大小的图片

<?php
$sourcefile = 'x.jpg';
#目标宽度
$newwidth = 150;
#目标高度
$newheight = 120;
#目标比例
$newbili = $newwidth / $newheight;

#源图片宽高
list($width, $height) = getimagesize($sourcefile);

if($width / $height > $newbili){
#原图较长
$w = $width - $newbili * $height;
$h = $height;
$x = ($width - $w) / 2;
$y = 0;
}else{
#原图较宽
$w = $width;
$h = $height - $newbili * $width;
$x = 0;
$y = ($height - $h) / 2;
}

$source = imagecreatefromjpeg($sourcefile);
$thumb = imagecreatetruecolor($newwidth, $newheight);

imageresized($thumb, $source, 0, 0, $x, $y, $newwidth, $newheight, $w, $h);
imagejpeg($thumb, "a.jpg");

注:此程序未考虑原图比目标图片小的情况

『捌』 php无组件裁剪图片

functioncut_img($img,$w,$h){//要裁减的图片,宽度,高度
$s=imagecreatefromjpeg($img);//这里以jpg图片为例,其他图片要修改这个方法名称,可以上网参考(就是后面那个后缀名不一样)
$w=imagesx($s)<$w?imagesx($s):$w;//如果图片的宽比要求的小,则以原图宽为准
$h=imagesy($s)<$w?imagesy($s):$h;
$bg=imagecreatetruecolor($w,$h);//创建$w*$h的空白图像
if(image($bg,$s,0,0,0,0,$w,$h)){
if(imagejpeg($bg,"img/new_img.jpg")){//将生成的图片保存到img/new_img.jpg
echo"success";
}else{
echo"false";
}
}else{
echo"false";
}
/*
*image($dst_im,$src_im,$dst_x,$dst_y,$src_x,$src_y,$src_w,$src_h)
将src_im图像中坐标从src_x,src_y开始,宽度为src_w,高度为src_h的一部分拷贝到dst_im图像中坐标为dst_x和dst_y的位置上。
*/
imagedestroy($s);//关闭图片
imagedestroy($bg);
//这里只写了几个主要操作,你可以再加上开始裁减的坐标,也就是image中的第5,第6两个参数,那么在判断$w和$h的地方也要相应的剪掉开始没算进去的部分,
//然后保存路径是否存在的判断等
}
cut_img("img/03.jpg",100,100);

『玖』 我要用PHP做一个缩放、裁剪后台图片的页面,该如何做

按照我的理解应该是这样的 ,首先你的服务器上面有很多图片,但是图片尺寸不符合使用要求,你想给一个cms使用者制作一个可以裁减缩放图片的功能.
你的思路前面2步骤是没有问题的 .
但是第三个步骤是不对的
我们平常所看到的裁减功能.例如BAI度的头像设置.是用JS模拟一个框框来模拟裁减.只有当用户真正点击保存后.通过js记录了裁减的起始位置.结束位置,宽高.等参数.通过php的GD库来重新绘制这张图片.保存并替换掉原来的 ,并且更新数据库信息.知道用户点击保存之前.这张图片的数据源都没有发生变化.