[英]Crop part of image in php and resize it
我有一個源圖像(可以是任何具有不同尺寸的圖像)。 我希望能夠告訴php圖片中的某個區域以裁剪並調整大小。 例如:
我嘗試使用函數imagecopyresampled()和imagecopyresized()但它們都給了我一個奇怪的問題:imagecopyresampled()輸出選擇圖像但被一個等同於源圖像尺寸的黑色區域包圍。 imagecopyresized()也會選擇所選區域,但它只是覆蓋在源圖像上。 此處的最終目標是從源圖像制作縮略圖。
我已經使用的代碼示例是:
list($width_orig, $height_orig) = getimagesize($filename);
imagecopyresized($image_final, $image, 0, 0, 0, 0, 37, 37, $width_orig, $height_orig);
以上並不完全像任務描述的那樣,但它演示了我遇到的問題。
注意:
我知道對這個主題進行搜索可以得到很多結果,但是它們主要引用的庫和類比我實際需要的要多得多。 我寧願對解決方案有所了解,並實施一些更有效的方法。 因此,我不希望被指向完成上述任務和其他50項任務的詳盡腳本。 我寧願了解上述內容,以便創建最佳的自定義解決方案。
你的問題實際上是一個邏輯問題。 你能檢查一下被撕毀嗎? 如果它不適合作物長度的縮放比例。
$w = imagesx($img);
$h = imagesy($img);
$newImage = imagecreatetruecolor($wNewOrj, $hNewOrj);
if(($w/$h)<($wNewOrj/$hNewOrj)){
$hNew = $h * $wNewOrj/$w;
$wNew = $wNewOrj;
}else{
$hNew = $hNewOrj;
$wNew = $w * $hNewOrj/$h;
}
$wDiff = round(abs($wNewOrj-$wNew)/2);
$hDiff = round(abs($hNewOrj-$hNew)/2);
imagecopyresampled($newImage, $img,
0, 0, $wDiff, $hDiff,
$wNew, $hNew, $w-$wDiff, $h-$hDiff);
imagejpeg($newImage, $path, 85);
嘗試我的圖像操縱器類,它完全符合你的要求 - http://github.com/philBrown/Tolerable/blob/master/library/Tolerable/Image/Manipulator.php
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.