本文目录一览:
我要用PHP做一个缩放、裁剪后台图片的页面,该如何做?
按照我的理解应该是这样的 ,首先你的服务器上面有很多图片,但是图片尺寸不符合使用要求,你想给一个cms使用者制作一个可以裁减缩放图片的功能.
你的思路前面2步骤是没有问题的 .
但是第三个步骤是不对的
我们平常所看到的裁减功能.例如BAI度的头像设置.是用JS模拟一个框框来模拟裁减.只有当用户真正点击保存后.通过js记录了裁减的起始位置.结束位置,宽高.等参数.通过php的GD库来重新绘制这张图片.保存并替换掉原来的 ,并且更新数据库信息.知道用户点击保存之前.这张图片的数据源都没有发生变化.
php求助图片缩放裁切问题
这段代码可以通过自已选择来决定图片的大小!
效果图如下所示:希望对你有帮助!
其中
minSize: [48,48],
setSelect: [0,0,190,190],
是调整选取范围的大小,若你 调整为120和160就改为了
setSelect: [0,0,120,160],
就可以了!
?php
error_reporting(7);
date_default_timezone_set("Asia/Shanghai");
header("Content-type:text/html; Charset=utf-8");
require_once("./image.class.php");
$images = new Images("file");
if ($_GET['act'] == 'cut'){
$image = "0000.jpg";
$res = $images-thumb($image,false,1);
if($res == false){
echo "裁剪失败";
}elseif(is_array($res)){
echo 'img src="'.$res['big'].'" style="margin:10px;"';
echo 'img src="'.$res['small'].'" style="margin:10px;"';
}elseif(is_string($res)){
echo 'img src="'.$res.'"';
}
}elseif(isset($_GET['act']) $_GET['act'] == "upload"){
$path = $images-move_uploaded();
$images-thumb($path,false,0); //文件比规定的尺寸大则生成缩略图,小则保持原样
if($path == false){
$images-get_errMsg();
}else{
echo "上传成功!a href='".$path."' target='_blank'查看/a";
}
}else{
?
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ";quot;;
html
head
meta name="Author" content="SeekEver"
meta name="Keywords" content=""
meta name="Description" content=""
meta content="text/html; charset=UTF-8" http-equiv="Content-Type"
script src="./js/jquery.min.js" type="text/javascript"/script
script src="./js/jquery.Jcrop.js" type="text/javascript"/script
link rel="stylesheet" href="./css/jquery.Jcrop.css" type="text/css" /
script type="text/javascript"
jQuery(function($){
// Create variables (in this scope) to hold the API and image size
var jcrop_api, boundx, boundy;
$('#target').Jcrop({
minSize: [48,48],
setSelect: [0,0,190,190],
onChange: updatePreview,
onSelect: updatePreview,
onSelect: updateCoords,
aspectRatio: 1
},
function(){
// Use the API to get the real image size
var bounds = this.getBounds();
boundx = bounds[0];
boundy = bounds[1];
// Store the API in the jcrop_api variable
jcrop_api = this;
});
function updateCoords(c)
{
$('#x').val(c.x);
$('#y').val(c.y);
$('#w').val(c.w);
$('#h').val(c.h);
};
function checkCoords()
{
if (parseInt($('#w').val())) return true;
alert('Please select a crop region then press submit.');
return false;
};
function updatePreview(c){
if (parseInt(c.w) 0)
{
var rx = 48 / c.w; //小头像预览Div的大小
var ry = 48 / c.h;
$('#preview').css({
width: Math.round(rx * boundx) + 'px',
height: Math.round(ry * boundy) + 'px',
marginLeft: '-' + Math.round(rx * c.x) + 'px',
marginTop: '-' + Math.round(ry * c.y) + 'px'
});
}
{
var rx = 199 / c.w; //大头像预览Div的大小
var ry = 199 / c.h;
$('#preview2').css({
width: Math.round(rx * boundx) + 'px',
height: Math.round(ry * boundy) + 'px',
marginLeft: '-' + Math.round(rx * c.x) + 'px',
marginTop: '-' + Math.round(ry * c.y) + 'px'
});
}
};
});
/script
/head
body
form method="post" action="?act=upload" enctype="multipart/form-data"
input type="file" name="file"
input type="submit" value="上传"
/form
div style="float:left;"img id="target" src="0000.jpg" /div
div style="width:48px;height:48px;margin:10px;overflow:hidden; float:left;"img style="float:left;" id="preview" src="0000.jpg" /div
div style="width:190px;height:195px;margin:10px;overflow:hidden; float:left;"img style="float:left;" id="preview2" src="0000.jpg" /div
form action="index.php?act=cut" method="post" onsubmit="return checkCoords();"
input type="hidden" id="x" name="x" /
input type="hidden" id="y" name="y" /
input type="hidden" id="w" name="w" /
input type="hidden" id="h" name="h" /
input type="submit" value="裁剪" /
/form
/body
/html
?php
}
?
如何实现PHP图片裁剪与缩放
给你段代码吧。上边的是具体的事务处理。下面的是类文件。
////////////////////////////////////////////////////下面开始处理图片压缩问题
$src = "$fileurl";
echo $src;
$image = new Image($src);
$width= $image-getimgwidth();
echo $width."宽度是这些";
if($width1024){
$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);
//将原图复制带图片载体上面,并且按照一定比例压缩,极大的保持了清晰度
imagecopyresampled($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);
}
}
?