【发布时间】:2013-05-15 07:00:10
【问题描述】:
我正在 PHP 中制作上传表单。虽然我希望表单上传一个精确的缩略图,比如说,100px 高和 100px 宽。表单必须在不拉伸图像的情况下重新缩放缩略图,而是从图像中删除一部分。我更喜欢用 100% php 和最简单的脚本来做这件事。我已经制作了上传表单,我只想知道如何用我的缩略图制作这个自动裁剪系统。
我真的希望你能帮助我,我想提前感谢你。
我的脚本已经上传了一张带有缩略图的图片:
if( $imgtype == 'image/jpeg' ){ $filetype= '.jpg'; }else{ $filetype= str_replace ( 'image/', '', $imgtype ); }
$path= 'images/' . md5( rand( 0, 1000 ) . rand( 0, 1000 ) . rand( 0, 1000 ) . rand( 0, 1000 ) ) . '.jpg';
$thumb_path= 'images/thumb_' . md5( rand( 0, 1000 ) . rand( 0, 1000 ) . rand( 0, 1000 ) . rand( 0, 1000 ) ) . '.jpg';
$imgsize2= getimagesize( $imgtemp );
$width= $imgsize2[0];
$height= $imgsize2[1];
$maxwidth= 1281;
$maxheight= 721;
$allowed= array( 'image/png', 'image/jpeg', 'image/gif', );
if( in_array( $imgtype, $allowed ) ){
if( $width < $maxwidth && $height < $maxheight ){
if( $imgsize < 5242880 ){
if( $width == $height ){ $case=1; }
if( $width > $height ){ $case=2; }
if( $width < $height ){ $case=3; }
switch( $case ){
case 1:
$newwidth= 100;
$newheight= 100;
break;
case 2:
$newheight= 100;
$ratio= $newheight / $height;
$newwidth= round( $width * $ratio );
break;
case 3:
$newwidth= 100;
$ratio= $newwidth / $width;
$newheight= $height * $ratio;
break;
}
switch( $imgtype ){
case 'image/jpeg';
$img= imagecreatefromjpeg( $imgtemp );
$thumb= imagecreatetruecolor( $newwidth, $newheight );
imagecopyresized( $thumb, $img, 0,0,0,0, $newwidth, $newheight, $width, $height );
imagejpeg( $thumb, $thumb_path );
break;
case 'image/png';
$img= imagecreatefrompng( $imgtemp );
$thumb= imagecreatetruecolor( $newwidth, $newheight );
imagecopyresized( $thumb, $img, 0,0,0,0, $newwidth, $newheight, $width, $height );
imagepng( $thumb, $thumb_path );
break;
case 'image/gif';
$img= imagecreatefromgif( $imgtemp );
$thumb= imagecreatetruecolor( $newwidth, $newheight );
imagecopyresized( $thumb, $img, 0,0,0,0, $newwidth, $newheight, $width, $height );
imagegif( $thumb, $thumb_path );
break;
} if(empty($errors)) {
move_uploaded_file( $imgtemp, $path );
$upimage = "Image is successfully uploaded.";
}
} else{
$errors[9] = "The image you just uploaded does not meet the requirements. Your picture is too large. ";
}
} else{
$errors[10] = "The image you just uploaded does not meet the requirements. It is a forbidden extension.";
}
} else{
$errors[11] = "The image you just uploaded does not meet the requirements. It is a forbidden extension. Type: $imgtype, $image, $imgsize, $imgtemp, $name";
}
if(empty($errors)) {
move_uploaded_file( $imgtemp, $path );
}
}
【问题讨论】:
-
你真的没有尝试过谷歌搜索吗? google.com/search?q=php+crop+image
-
我做到了,但它要么太难,要么不是我的意思。但是感谢您的帮助。
-
哪一部分难?这个网站是用来询问你被困的事情的问题,而不是要求你甚至还没有尝试解决的问题的完整解决方案。
-
sgroves,你说的不是真的。为什么你会觉得我没有做研究?问题是如何在不将图像拉伸到 PHP 上传表单中的情况下裁剪图像。我的脚本已经制作了缩略图,但我希望它上传具有精确宽度和高度的缩略图
标签: php image-processing crop