[英]How can I crop the image in php with given coordinates of X,Y,Width and Height
[英]How can I crop an image properly with php?
我正在嘗試在PHP
上裁剪圖像。 我看到有一個在PHP
上執行此操作的函數: imagecrop 。 這是我嘗試裁剪圖像的代碼。
$image = imagecreatefromjpeg(//Path of the image);
$croppedImage = imagecrop($image, array("x"=>0,"y"=>0,"width"=>100,"height"=>100));
imagejpeg($croppedImage, //Path in which the image will be stored);
在這里,我希望圖像的裁剪從圖像的左角開始,並獲得我在上方放置的width和height的值。
但這只是調整我的圖像大小,而不是裁剪圖像。 我究竟做錯了什么?
編輯:
我也嘗試了imagecopyresampled函數。 這是我嘗試過的:
dst_image(Destination image link resource) = newImage; //Here the new image that I want to create.
src_image(Source image link resource) = image; //Here the original image.
//Here 0,0 because I want that the new image crop starts in the left corner of the original image.
dst_x(x-coordinate of destination point) = 0;
dst_y(y-coordinate of destination point) = 0;
//Here 0,0 because I want that the crop starts on the 0,0 of the original image
src_x(x-coordinate of source point) = 0;
src_y(y-coordinate of source point) = 0;
dst_w(Destination width) = 150; //The new width of the crop image.
dst_h(Destination height) = 150; //The new height of the crop image.
src_w(Source width) = 500; //The original width of the image.
src_h(Source height) = 500; //The original height of the image.
因此,最終的功能將類似於:
$b = imagecopyresampled ($dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w , $dst_h , $src_w , $src_h );
我只是在此函數中有問題,這就是為什么要避免其余部分(保存和imagetruecolor以及其余部分...)
此功能給我預期的結果,但是新圖像為黑色,為什么?
提前致謝!
嘗試這個:
$dst_x = 0; // X-coordinate of destination point
$dst_y = 0; // Y-coordinate of destination point
$src_x = 100; // Crop Start X position in original image
$src_y = 100; // Crop Srart Y position in original image
$dst_w = 160; // Thumb width
$dst_h = 120; // Thumb height
$src_w = 260; // $src_x + $dst_w Crop end X position in original image
$src_h = 220; // $src_y + $dst_h Crop end Y position in original image
// Creating an image with true colors having thumb dimensions (to merge with the original image)
$dst_image = imagecreatetruecolor($dst_w, $dst_h);
// Get original image
$src_image = imagecreatefromjpeg('images/cropped_whatever.jpg');
// Cropping
imagecopyresampled($dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h);
// Saving
imagejpeg($dst_image, 'images/crop.jpg');
另外,您可以使用的功能imagecrop imagick 。
最后,我找到了解決問題的方法。 我必須輸入相同的dst_w
和src_w
值。 與dst_h
和src_h
相同。 ¡¡
最終的解決方案如下:
$b = imagecopyresampled ($dst_image, $src_image, 0, 0, 0, 0, 150, 150, 150, 150);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.