我正在尝试从YouTube jpeg缩略图的顶部和底部裁剪掉45px,例如this one,即480px x 360px。
看起来像这样:
请注意图像顶部和底部的45px黑条。我只是希望那些被移除,使我的结果图像是480px x 270px,黑条消失了。
通过实施this stack post中的示例,我取得了部分成功。这是我的PHP函数基于:
function CropImage($sourceImagePath, $width, $height){
$src = imagecreatefromjpeg($sourceImagePath);
$dest = imagecreatetruecolor($width, $height);
imagecopy($dest, $src, 0, 0, 20, 13, $width, $height);
header('Content-Type: image/jpeg');
imagejpeg($dest);
imagedestroy($dest);
imagedestroy($src);
}
如此称呼:
CropImage("LOTR.jpg", 480, 270);
发生一些裁剪,但会产生2个问题:
header('Content-Type: image/jpeg');
是问题的一部分,但删除它仍然不会给我一个写入服务器的目标文件,这是一种方法。我也在寻找PHP docs here。似乎改变imagecopy($dest, $src, 0, 0, 20, 13, $width, $height);
中的参数会解决这个问题,但我真的不清楚这些参数应该是什么。带有黑条的resulting thumbnails inside the YouTube tab look odd。提前感谢任何建议。
答案 0 :(得分:1)
<?php
function CropImage($sourceImagePath, $width, $height){
// Figure out the size of the source image
$imageSize = getimagesize($sourceImagePath);
$imageWidth = $imageSize[0];
$imageHeight = $imageSize[1];
// If the source image is already smaller than the crop request, return (do nothing)
if ($imageWidth < $width || $imageHeight < $height) return;
// Get the adjustment by dividing the difference by two
$adjustedWidth = ($imageWidth - $width) / 2;
$adjustedHeight = ($imageHeight - $height) / 2;
$src = imagecreatefromjpeg($sourceImagePath);
// Create the new image
$dest = imagecreatetruecolor($width,$height);
// Copy, using the adjustment to crop the source image
imagecopy($dest, $src, 0, 0, $adjustedWidth, $adjustedHeight, $width, $height);
imagejpeg($dest,'somefile.jpg');
imagedestroy($dest);
imagedestroy($src);
}