PHP裁剪 动态裁剪框,要求生成固定大小的图片
主要参数提供裁剪框是动态大小,但是高宽比例固定结果,例如裁剪框调整到500*300那么图片就是500*300大小要求:把裁剪结果缩小至150*100(例如)固定尺寸的如果...
主要参数提供
裁剪框是动态大小,但是高宽比例固定
结果,例如裁剪框调整到500*300 那么图片就是500*300大小
要求:把裁剪结果缩小至150*100 (例如)固定尺寸的
如果大图缩小比例后 是 150*130 那么取 图片中间的部分。
代码参数:
PHP部分:
$imginfo = getimagesize($cfg_basedir.$file);
$imgw=$imginfo[0];
$imgh=$imginfo[1];
$temp=300/$imgw;
$newwidth=300;
$newheight=$imgh*$temp;
$srcFile = $cfg_basedir.$file;
$thumb = imagecreatetruecolor($newwidth, $newheight);
$thumba = imagecreatetruecolor($width, $height);
imagecopyresized($thumb, $source, 0,0, 0,0 , $newwidth, $newheight, $imgw, $imgh);
imagecopy($thumba,$thumb,0,0,$left,$top,$newwidth,$newheight);
htm 裁剪框部分:
<script type="text/javascript">
var scale=1;
var imgH=$("#faceImg").height();
var imgW=$("#faceImg").width();
var src=$("#faceImg").attr("src");
var scale=120/120;
$(function(){
$("#imgBox").width(imgW).height(imgH);
$("#setFace").width(700).height(imgH+4);
$("#imgCut").css("background","url(../../images/transparent.gif) repeat");
$("#faceImg_pre").height(imgH*scale);
$("#imgBox_pre div").scrollTop(20*scale).scrollLeft(20*scale);
});
$("#imgCut").draggable({
containment:$("#faceImg"),
drag:function(){
var temp_top=$(this).offset().top-$("#faceImg").offset().top;
var temp_left=$(this).offset().left-$("#faceImg").offset().left;
scale=90/$(this).height();
$("#faceImg_pre").height(imgH*scale);
$(this).css("background"," url(../../images/transparent.gif) repeat");
$("#imgBox_pre div").scrollTop(temp_top*scale).scrollLeft(temp_left*scale);
$("#width").val($(this).width());
$("#height").val($(this).height());
$("#left").val(($(this).offset().left-$("#faceImg").offset().left));
$("#top").val(($(this).offset().top-$("#faceImg").offset().top));
},
stop:function(){
}
});
$("#imgCut").resizable({
containment:$("#faceImg"),
handles:"all",
knobHandles:true,
aspectRatio:true,
minWidth:120,
minHeight:90,
resize:function(){
var temp_top=$(this).offset().top-$("#faceImg").offset().top;
var temp_left=$(this).offset().left-$("#faceImg").offset().left;
scale=90/$(this).height();
$("#faceImg_pre").height(imgH*scale);
$(this).css("background","url(../../images/transparent.gif) repeat");
$("#imgBox_pre div").scrollTop(temp_top*scale).scrollLeft(temp_left*scale);
$("#width").val($(this).width());
$("#height").val($(this).height());
$("#left").val(($(this).offset().left-$("#faceImg").offset().left));
$("#top").val(($(this).offset().top-$("#faceImg").offset().top));
},
stop:function(e,ui){
}
});
</script>
谢谢
PS。针对 PHP中 $temp=300/$imgw;
$newwidth=300; 说明一下。裁剪操作 图片最大显示宽度是300.CSS中定义了 展开
裁剪框是动态大小,但是高宽比例固定
结果,例如裁剪框调整到500*300 那么图片就是500*300大小
要求:把裁剪结果缩小至150*100 (例如)固定尺寸的
如果大图缩小比例后 是 150*130 那么取 图片中间的部分。
代码参数:
PHP部分:
$imginfo = getimagesize($cfg_basedir.$file);
$imgw=$imginfo[0];
$imgh=$imginfo[1];
$temp=300/$imgw;
$newwidth=300;
$newheight=$imgh*$temp;
$srcFile = $cfg_basedir.$file;
$thumb = imagecreatetruecolor($newwidth, $newheight);
$thumba = imagecreatetruecolor($width, $height);
imagecopyresized($thumb, $source, 0,0, 0,0 , $newwidth, $newheight, $imgw, $imgh);
imagecopy($thumba,$thumb,0,0,$left,$top,$newwidth,$newheight);
htm 裁剪框部分:
<script type="text/javascript">
var scale=1;
var imgH=$("#faceImg").height();
var imgW=$("#faceImg").width();
var src=$("#faceImg").attr("src");
var scale=120/120;
$(function(){
$("#imgBox").width(imgW).height(imgH);
$("#setFace").width(700).height(imgH+4);
$("#imgCut").css("background","url(../../images/transparent.gif) repeat");
$("#faceImg_pre").height(imgH*scale);
$("#imgBox_pre div").scrollTop(20*scale).scrollLeft(20*scale);
});
$("#imgCut").draggable({
containment:$("#faceImg"),
drag:function(){
var temp_top=$(this).offset().top-$("#faceImg").offset().top;
var temp_left=$(this).offset().left-$("#faceImg").offset().left;
scale=90/$(this).height();
$("#faceImg_pre").height(imgH*scale);
$(this).css("background"," url(../../images/transparent.gif) repeat");
$("#imgBox_pre div").scrollTop(temp_top*scale).scrollLeft(temp_left*scale);
$("#width").val($(this).width());
$("#height").val($(this).height());
$("#left").val(($(this).offset().left-$("#faceImg").offset().left));
$("#top").val(($(this).offset().top-$("#faceImg").offset().top));
},
stop:function(){
}
});
$("#imgCut").resizable({
containment:$("#faceImg"),
handles:"all",
knobHandles:true,
aspectRatio:true,
minWidth:120,
minHeight:90,
resize:function(){
var temp_top=$(this).offset().top-$("#faceImg").offset().top;
var temp_left=$(this).offset().left-$("#faceImg").offset().left;
scale=90/$(this).height();
$("#faceImg_pre").height(imgH*scale);
$(this).css("background","url(../../images/transparent.gif) repeat");
$("#imgBox_pre div").scrollTop(temp_top*scale).scrollLeft(temp_left*scale);
$("#width").val($(this).width());
$("#height").val($(this).height());
$("#left").val(($(this).offset().left-$("#faceImg").offset().left));
$("#top").val(($(this).offset().top-$("#faceImg").offset().top));
},
stop:function(e,ui){
}
});
</script>
谢谢
PS。针对 PHP中 $temp=300/$imgw;
$newwidth=300; 说明一下。裁剪操作 图片最大显示宽度是300.CSS中定义了 展开
展开全部
<?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);
imagecopyresized($thumb, $source, 0, 0, $x, $y, $newwidth, $newheight, $w, $h);
imagejpeg($thumb, "a.jpg");
注:此程序未考虑原图比目标图片小的情况
$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);
imagecopyresized($thumb, $source, 0, 0, $x, $y, $newwidth, $newheight, $w, $h);
imagejpeg($thumb, "a.jpg");
注:此程序未考虑原图比目标图片小的情况
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询