问题
I want to crop an image. Is it possible to do like this. And if yes, how would the crop()
function look like?
$imgURL
is always a .jpg
image.
$image = file_get_contents($imgURL);
$maxWidth = 100;
$height = 68;
$image = crop($image, $maxWidth, $height);
file_put_contents("media/imgname.jpg", $image);
function crop($image, $maxWidth, $height){
...how do I crop the image?
}
回答1:
If you have the GD library installed, taked a look at the functions available to you. If you want more explanation and an example, take a look at this blog.
Also, there's plenty of SO posts to help you along.
回答2:
Take a look at the gd library that's usually part of most PHP installs.
Typically, you'd:
- import the image using one of the imagecreatefromTYPE functions
- use imagecreate($width,$height) to make a blank buffer image
- use imagecopy() to transfer the portion you want to the buffer
- use one of the imageTYPE functions to write the buffer out to a file.
回答3:
you can use timthumb for croping , using timtgumb you can resize image on fly....
check this http://www.wprecipes.com/how-to-resize-images-on-the-fly
here is the result http://joedesigns.com/resizing2/example.php
回答4:
Another option you may be able to use is Image Magick if it GD is not installed on your server.
回答5:
Find below code for image crop using GD library:
<?php
function createThumb($upfile, $dstfile, $max_width, $max_height){
$size = getimagesize($upfile);
$width = $size[0];
$height = $size[1];
$x_ratio = $max_width / $width;
$y_ratio = $max_height / $height;
if( ($width <= $max_width) && ($height <= $max_height)) {
$tn_width = $width;
$tn_height = $height;
} elseif (($x_ratio * $height) < $max_height) {
$tn_height = ceil($x_ratio * $height);
$tn_width = $max_width;
} else {
$tn_width = ceil($y_ratio * $width);
$tn_height = $max_height;
}
if($size['mime'] == "image/jpeg"){
$src = ImageCreateFromJpeg($upfile);
$dst = ImageCreateTrueColor($tn_width, $tn_height);
imagecopyresampled($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height,$width, $height);
imageinterlace( $dst, true);
ImageJpeg($dst, $dstfile, 100);
} else if ($size['mime'] == "image/png"){
$src = ImageCreateFrompng($upfile);
$dst = ImageCreateTrueColor($tn_width, $tn_height);
imagecopyresampled($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height,$width, $height);
Imagepng($dst, $dstfile);
} else {
$src = ImageCreateFromGif($upfile);
$dst = ImageCreateTrueColor($tn_width, $tn_height);
imagecopyresampled($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height,$width, $height);
imagegif($dst, $dstfile);
}
}
//usage
if(isset($_FILES['upload_Image']['name']) && $_FILES['upload_Image']['name']!=='') {
$ext = substr($_FILES['upload_Image']['name'], strpos($_FILES['upload_Image']['name'],'.'), strlen($_FILES['upload_Image']['name'])-1);
$imgNormal = time().$ext;
$normalDestination = "Photos/Orignal/" . $imgNormal;
$httpRootLarge = "Photos/Large/" . $imgNormal;
$httpRootSmall = "Photos/Small/" . $imgNormal;
$httpRootThumb = "Photos/Thumb/" . $imgNormal;
move_uploaded_file($_FILES['upload_Image']['tmp_name'], $normalDestination);
createThumb($normalDestination,$httpRootLarge,680,604); #For 604x604 Image
createThumb($normalDestination,$httpRootSmall,500,300); #For 500x300 Image
createThumb($normalDestination,$httpRootThumb,130,100); #For 130x100 Image
}
?>
回答6:
Just try doing JCROP plugin from Jquery
One of the best plugin for cropping images
deepliquid.com----download JCROP
function cropfun(){
$('#previews').Jcrop({
aspectRatio: 3,
minSize:[300,100] ,
boxWidth: 450, boxHeight: 400,
bgFade:true,
bgOpacity: .5,
setSelect: [ 60, 70, 600, 330 ],
onSelect: updateCoords
});
}
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('Select where you want to Crop.');
return false;
};
In the body part
<img src="uploads/<?php echo $image; ?>" id="previews" name="previews" onclick="cropfun();" />
<input type="file" name="image22" id="image22" style="visibility:hidd" >
<input type="hidden" id="hh" name="hh" value="" />
<input type="hidden" id="hhh" name="hhh" value="<?php echo $image; ?>" />
<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" name="submit" id="sub" value="submit" />
</form>
来源:https://stackoverflow.com/questions/1372514/crop-image-using-php