Hàm imagecrop[] trong PHP có nhiệm vụ cắt một ảnh theo tỷ lệ nhất định.
imagecrop [ resource $image , array $rect ] : resource
- Tham số truyền vào
- Giá trị trả về
- Ví dụ minh họa
- Ứng dụng
- Các hàm liên quan
Tham số truyền vào
- $image là nguồn của ảnh, hoặc được tạo từ hàm imagecreatetruecolor[].
- $rect là kích thước cắt ảnh theo toạ độ x,y và width,height.
Giá trị trả về
Hàm này trả về đường dẫn của file được Crop nếu thành công và trả về FALSE nếu thất bại.
Ví dụ minh họa
Ảnh ban đầu
Ảnh sau khi được Crop
Ứng dụng
Ảnh trước khi Crop
Ảnh sau khi Crop
Trong ví dụ trên bạn có thể sử dụng để crop lấy trung tâm của ảnh gốc.
Các hàm liên quan
- imagecreatetruecolor[] hàm tạo một khung ảnh với 2 tham số width,height.
- imagecolorallocate[] hàm xác định giá trị màu sắc theo chuẩn màu rgb.
- imagestring[] hàm tạo text vào ảnh.
- imagecropauto[] hàm crop ảnh theo chế độ có sẵn.
Hi vọng với bài viết này, bạn đã hiểu rõ cách sử dụng hàm imagecrop[] trong PHP. Nếu thấy bài viết hay và ý nghĩa, hãy like và chia sẻ với bạn bè để mọi người cùng nhau học tập nhé. Cảm ơn bạn đã ghé thăm codetutam.com
answer
124
Nếu bạn đang cố gắng tạo hình thu nhỏ, trước tiên bạn phải thay đổi kích thước hình ảnh bằng cách sử dụng imagecopyresampled[];
. Bạn phải thay đổi kích thước của hình ảnh để kích thước của cạnh nhỏ hơn của hình ảnh bằng với cạnh tương ứng của ngón tay cái.
Ví dụ: nếu hình ảnh nguồn của bạn là 1280x800px và ngón tay cái của bạn là 200x150px, bạn phải thay đổi kích thước hình ảnh của mình thành 240x150px và sau đó cắt nó thành 200x150px. Điều này để tỷ lệ khung hình của hình ảnh sẽ không thay đổi.
Đây là công thức chung để tạo hình thu nhỏ:
$image = imagecreatefromjpeg[$_GET['src']];
$filename = 'images/cropped_whatever.jpg';
$thumb_width = 200;
$thumb_height = 150;
$width = imagesx[$image];
$height = imagesy[$image];
$original_aspect = $width / $height;
$thumb_aspect = $thumb_width / $thumb_height;
if [ $original_aspect >= $thumb_aspect ]
{
// If image is wider than thumbnail [in aspect ratio sense]
$new_height = $thumb_height;
$new_width = $width / [$height / $thumb_height];
}
else
{
// If the thumbnail is wider than the image
$new_width = $thumb_width;
$new_height = $height / [$width / $thumb_width];
}
$thumb = imagecreatetruecolor[ $thumb_width, $thumb_height ];
// Resize and crop
imagecopyresampled[$thumb,
$image,
0 - [$new_width - $thumb_width] / 2, // Center the image horizontally
0 - [$new_height - $thumb_height] / 2, // Center the image vertically
0, 0,
$new_width, $new_height,
$width, $height];
imagejpeg[$thumb, $filename, 80];
Chưa thử nghiệm điều này nhưng nó sẽ hoạt động.
BIÊN TẬP
Bây giờ đã được thử nghiệm và hoạt động.
124 hữu ích 5 bình luận chia sẻ
answer
16
imagecopyresampled[]
sẽ lấy một khu vực hình chữ nhật từ $src_image
chiều rộng $src_w
và chiều cao $src_h
tại vị trí [$src_x, $src_y]
và đặt nó vào một khu vực hình chữ nhật $dst_image
có chiều rộng $dst_w
và chiều cao $dst_h
tại vị trí [$dst_x, $dst_y]
.
Nếu tọa độ nguồn và đích cũng như chiều rộng và chiều cao khác nhau, việc kéo giãn hoặc thu nhỏ đoạn ảnh thích hợp sẽ được thực hiện. Các tọa độ tham chiếu đến góc trên bên trái.
Chức năng này có thể được sử dụng để sao chép các vùng trong cùng một hình ảnh. Nhưng nếu các khu vực trùng nhau, kết quả sẽ không thể đoán trước được.
- Biên tập -
Nếu $src_w
và $src_h
nhỏ hơn $dst_w
và $dst_h
tương ứng, hình ảnh ngón tay cái sẽ được phóng to. Nếu không, nó sẽ được thu nhỏ.
16 hữu ích 1 bình luận chia sẻ
answer
3
php 5.5 có chức năng hình ảnh //php.net/manual/en/ Chức năng.imagecrop.php
3 hữu ích 0 bình luận chia sẻ
answer
1
Cải thiện chức năng Crop hình ảnh trong PHP một cách nhanh chóng.
//www.example.com/cropimage.php?filename=a.jpg&newxsize=100&newysize=200&constrain=1
Mã trong cropimage.php
$basefilename = @basename[urldecode[$_REQUEST['filename']]];
$path = 'images/';
$outPath = 'crop_images/';
$saveOutput = false; // true/false ["true" if you want to save images in out put folder]
$defaultImage = 'no_img.png'; // change it with your default image
$basefilename = $basefilename;
$w = $_REQUEST['newxsize'];
$h = $_REQUEST['newysize'];
if [$basefilename == ""] {
$img = $path . $defaultImage;
$percent = 100;
} else {
$img = $path . $basefilename;
$len = strlen[$img];
$ext = substr[$img, $len - 3, $len];
$img2 = substr[$img, 0, $len - 3] . strtoupper[$ext];
if [!file_exists[$img]] $img = $img2;
if [file_exists[$img]] {
$percent = @$_GET['percent'];
$constrain = @$_GET['constrain'];
$w = $w;
$h = $h;
} else if [file_exists[$path . $basefilename]] {
$img = $path . $basefilename;
$percent = $_GET['percent'];
$constrain = $_GET['constrain'];
$w = $w;
$h = $h;
} else {
$img = $path . 'no_img.png'; // change with your default image
$percent = @$_GET['percent'];
$constrain = @$_GET['constrain'];
$w = $w;
$h = $h;
}
}
// get image size of img
$x = @getimagesize[$img];
// image width
$sw = $x[0];
// image height
$sh = $x[1];
if [$percent > 0] {
// calculate resized height and width if percent is defined
$percent = $percent * 0.01;
$w = $sw * $percent;
$h = $sh * $percent;
} else {
if [isset [$w] AND !isset [$h]] {
// autocompute height if only width is set
$h = [100 / [$sw / $w]] * .01;
$h = @round[$sh * $h];
} elseif [isset [$h] AND !isset [$w]] {
// autocompute width if only height is set
$w = [100 / [$sh / $h]] * .01;
$w = @round[$sw * $w];
} elseif [isset [$h] AND isset [$w] AND isset [$constrain]] {
// get the smaller resulting image dimension if both height
// and width are set and $constrain is also set
$hx = [100 / [$sw / $w]] * .01;
$hx = @round[$sh * $hx];
$wx = [100 / [$sh / $h]] * .01;
$wx = @round[$sw * $wx];
if [$hx < $h] {
$h = [100 / [$sw / $w]] * .01;
$h = @round[$sh * $h];
} else {
$w = [100 / [$sh / $h]] * .01;
$w = @round[$sw * $w];
}
}
}
$im = @ImageCreateFromJPEG[$img] or // Read JPEG Image
$im = @ImageCreateFromPNG[$img] or // or PNG Image
$im = @ImageCreateFromGIF[$img] or // or GIF Image
$im = false; // If image is not JPEG, PNG, or GIF
if [!$im] {
// We get errors from PHP's ImageCreate functions...
// So let's echo back the contents of the actual image.
readfile[$img];
} else {
// Create the resized image destination
$thumb = @ImageCreateTrueColor[$w, $h];
// Copy from image source, resize it, and paste to image destination
@ImageCopyResampled[$thumb, $im, 0, 0, 0, 0, $w, $h, $sw, $sh];
//Other format imagepng[]
if [$saveOutput] { //Save image
$save = $outPath . $basefilename;
@ImageJPEG[$thumb, $save];
} else { // Output resized image
header["Content-type: image/jpeg"];
@ImageJPEG[$thumb];
}
}
1 hữu ích 0 bình luận chia sẻ
answer
0
$image = imagecreatefromjpeg[$_GET['src']];
Cần được thay thế bằng cái này:
$image = imagecreatefromjpeg['images/thumbnails/myimage.jpg'];
Bởi vì imagecreatefromjpeg[]
đang mong đợi một chuỗi.
Điều này đã làm việc cho tôi.
ref:
//php.net/manual/en/ Chức năng.imagecreatefromjpeg.php
0 hữu ích 0 bình luận chia sẻ
answer
0
Mã HTML:-
enter code here
Select image to upload:
upload.php
enter code here
0 hữu ích 0 bình luận chia sẻ
answer
0
Bạn có thể sử dụng imagecrop
hàm trong [PHP 5> = 5.5.0, PHP 7]
Thí dụ:
0 hữu ích 0 bình luận chia sẻ
answer
-1
$image = imagecreatefromjpeg[$_GET['src']];
$filename = 'images/cropped_whatever.jpg'
Phải được thay thế bằng:
$image = imagecreatefromjpeg[$_GET['src']];
Sau đó, nó sẽ hoạt động!
-1 hữu ích 0 bình luận chia sẻ