勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPにてSVGファイルをjpg / png画像に変換する方法

  PHP

PHPにてSVGファイルをjpgもしくはpng形式の画像ファイルに変換したいというケースがあった。調べたところImagickモジュールを使用することで対応できるらしい。以下に対応方法をメモ。

 

Imagick

インストールされているか確認

phpinfo()で「imagick」の項目があればインストールされている筈。

インストールされていない場合は過去記事を参考の上、インストールすること。

 

対応方法

jpgの場合

<?php
$image = new Imagick();
$svg = file_get_contents('./test.svg');
$image->readImageBlob($svg);
$image->setImageFormat('jpeg');

if( $image->writeImage('./test.jpg') ){
    echo 'success';
}else{
    echo 'error';
}

pngの場合

<?php
$image = new Imagick();
$svg = file_get_contents('./test.svg');
$image->readImageBlob($svg);
$image->setImageFormat('png24');

if( $image->writeImage('./test.png') ){
    echo 'success';
}else{
    echo 'error';
}

 

リファレンス

readImageBlob

https://www.php.net/manual/ja/imagick.readimageblob.php

setImageFormat

https://www.php.net/manual/ja/imagick.setimageformat.php

writeImage

https://www.php.net/manual/ja/imagick.writeimage.php

 - PHP

  関連記事

フォームで画像をとりあつかう際にBase64エンコードした上で送信する方法
フォームで画像をとりあつかう際にBase64エンコードした上で送信する方法

PHP等サーバサイド系の言語は利用不可(JSは利用可)な環境でformを作成し画 ...

jQueryで画像を遅延ロードする「jquery.lazyload.js」の利用方法
jQueryで画像を遅延ロードする「jquery.lazyload.js」の利用方法

画像を遅延ロードさせたい時にはjQueryプラグインのlazyloadが便利。以 ...

Lightboxで画像拡大時にダウンロードリンクを設置する方法
Lightboxで画像拡大時にダウンロードリンクを設置する方法

Lightboxで画像拡大時にダウンロードリンクを設置したいと要望を受けた。もち ...

「slick」でブラウザ幅がPCの場合はスライダーを表示し、スマホ幅の場合はスライダー無しにする方法
「slick」でブラウザ幅がPCの場合はスライダーを表示し、スマホ幅の場合はスライダー無しにする方法

slickプラグインで画像スライダーを設置しているページがあり、PCのブラウザ幅 ...

faviconをサイトURLもしくはpngファイルから生成する方法
faviconをサイトURLもしくはpngファイルから生成する方法

AというサイトのfaviconをBというサイトで使いたかった。ただ、favico ...