LoginSignup
0
0

More than 3 years have passed since last update.

PHP(Imagick)でイメージをマスクして切り取る

Posted at

完成形

test.png

画像の左右を斜めに切り取っています。

mask223.png

やりたいこととしては、上記の画像の赤枠で囲っている、2つの画像を合わせてその合わさっている場所を切り抜きたい。

元画像とマスク用画像の用意

元画像
Zoe_0.jpg

マスク用の画像(同じサイズで左右の斜めを透過してあります。)
mask2.png

 実装


    //元画像をURLから呼び出し
    $thumbnail = file_get_contents("http://ddragon.leagueoflegends.com/cdn/img/champion/loading/Zoe_0.jpg");
    $image = new Imagick();
    $image->readImageBlob($thumbnail);
    //アルファチャネルの設定で、黒い部分を透明にする。
    $image->setImageAlphaChannel(Imagick::ALPHACHANNEL_RESET);
    //マスク用の画像を取得
    $mask = new Imagick(storage_path("mask.png"));
    //元画像を重ね合わせてマスクする
    //COMPOSITE_DSTOUTにすると、重なっている部分が切り抜かれる
    $image->compositeImage($mask, Imagick::COMPOSITE_DSTIN, 0, 0);
    //保存
    $image->writeImage(storage_path("test.png"));

以上で簡単な実装です。

さらにこれに画像を重ね合わせたり、文字を入れたりするとOGP的な画像の動的生成などができるかと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0