2017-03-21 6 views
0

解像度が720x1280の画像があり、解像度800x1500のサーバに保存する必要があります。 720x1280が高さ1500に増えたので844x1500の解像度が得られました。画像を切り抜く必要があります。左右から22ピクセルを取り除く必要があります。今のPHPはURLから画像の解像度を上げてからクロップする

私はこれがあります。

$img_url = file_get_contents($url); 

$img = imagecreatefromstring($img_url); 

$width = imagesx($img); 
$height = imagesy($img); 

$new_width = '800'; 
$new_height = '1500'; 

$thumb = imagecreatetruecolor($new_width, $new_height); 

imagecopyresampled($thumb, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 

imagejpeg($thumb, $name, 100); 

imagedestroy($thumb); 
imagedestroy($img); 

をしかし、問題はそのイメージが左側と右側から22個のピクセルが除去されず、クロップされていないです。

最初にURLから画像の解像度を上げてからトリミングする方法はありますか? php image cropをグーグルで

答えて

1

the secret明らかに:この行で

$rect = [22, 0, 800, 1500] 
$thumb = imagecrop($thumb, $rect) 
+0

この場合、 '$ new_width = '844';'を設定してから、最初にトリミングする必要があります。 – cyborg86pl

+0

それは正しいでしょう。私はちょうどクロップに関するOPの質問に答えるだけです、コードに間違った他のものがあります。 – alexis

+0

ありがとう、それは私が必要としたものです!コードで他に何が間違っているのか教えていただけますか? – user3593157

0

imagecopyresampled($thumb, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 

あなただけの新しい次元にあなたの元の画像を拡大縮小します。 documentationとして は言う:ソースとデスティネーション座標と幅と高さが異なる場合、適切な延伸又は実行される画像片の収縮

あなたが設定する必要があります。

ます先の画像に貼り付けし、ソース画像の必要な(比例)の長方形をカット
$shiftX = 22*(1280/1500); // consider passing variables rather than constant values 
$scaledWidth = 720-$shiftX*2; 
imagecopyresampled($thumb, $img, 0, 0, $shiftX, 0, $new_width, $new_height, $scaledWidth, $height); 

関連する問題