2017-02-24 6 views
-1

ディメンションを使用してPHPで画像をトリミングする必要があります。PHPで次元を使って画像を切り抜くにはどうすればいいですか?

JPEG形式でローカルに保存します。 iは受信

寸法は、

{"left":82.5,"top":48.875,"width":660,"height":371.25} 

私は画像のオリジナルサイズからトリミングする必要があります。

Ex。イメージは1200x800です。サイズ変更されていないか、または実際のサイズからの結果イメージの寸法です。品質は同じでなければならないからです。

これらのパラメータを使用して画像をトリミングするにはどうすればよいですか?

可能ですか?

$image = realpath("/path/to/your/image.extension"); 
$cropped = realpath("/path/to/your/output/image.png"); 

$imObj = new Imagick(); 
$imObj->cropImage($width, $height, $offset_x, $offset_y); 
$imObj->setImageFormat("png"); // this is unnesesary, you can force an image format with the extension of the output filename. 
$imObj->writeImage($cropped); 

ロスレス出力用として、可逆符号化した画像形式を使用する:

+0

これらの値はどのような次元ですか? 0.5 pxは生成するのが難しいでしょう – Martin

答えて

0

内蔵imagick class使用します。 PNGはネットワーク転送用に設計されているため(つまり、「Adam-7」インターレース)、ジョブに最適です。 チェックグラフィックデザイン・スタック上のロスレス画像フォーマットについては、この関連の質問:

What are lossless image formats?

+1

Imagickは***ではありません。***この»PECL拡張はPHPにバンドルされていません。 ' – Martin

0

あなたはかなりまさにこのために設計されたimageCopyResampled機能を使用することができます。

$image = imagecreatefromjpeg($imageFileURL); 
/*** 
* resize values (imported) 
***/ 
$left = 82; 
$top = 49; 
$width = 660; 
$height = 371; 

/*** 
* Create destination image 
***/ 
$newImage = imagecreatetruecolor($width,$height); 
$saveToFile = "destintion filespace of image file.jpg" 

if(imagecopyresampled($newImage, $image, //dest/source images 
     0, 0,       // dest coordinates 
    $left, $top,       // source coordinates 
    $width, $height,      // size of area to paste to 
    $width, $height      // size of area to copy from 
)){ 
    imagejpeg($newImage,$saveToFile,100); //zero compression saved to file 
    print "image resized ok!!"; 
} 

新しいfileimageは$height$widthで指定されたサイズとなり、$left$topで与えられた値によって原画像からオフセットされるであろう。あなたの質問から、これはあなたが望むように見えます。これは、ファイルのサイズを変更したりイメージの圧縮を変更したりすることはありません(ファイルを保存してから、これらの詳細を自分で設定するまで)。

関連する問題