Error Uncaught exception ‘ImagickException’ with message ‘WriteBlob Failed’ saat convert SVG ke PNG dengan Imagick

Awalnya kepingin convert SVG ke PNG buat nolongin temen yang disuruh convert trus resize dari SVG ke PNG dengan 2 ukuran dan jumlah-nyaaaa 1000-an gambar SVG 😀 (kebayang pegel-nya). Pas cari-cari tutor, ketemu contoh sederhana di sini : http://stackoverflow.com/questions/4809194/convert-svg-image-to-png-with-php. Kode sederhananya :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public function convert_to_png() {
    $upload_path_url = base_url() . 'png/';
    $usmap = 'usmap.svg';
    $im = new Imagick();
    $svg = file_get_contents($upload_path_url . $usmap);
    $im->readImageBlob($svg);
    $im->setImageFormat("png32");
    $im->resizeImage(720, 445, imagick::FILTER_LANCZOS, 1);

    if(!$im->writeImage($upload_path_url . 'usmap.png')) {
        echo 'Gagal';
    } else {
        echo 'Berhasil';
    }
   
    $im->clear();
    $im->destroy();
}

Pas dicoba install imagick ketemu error Uncaught exception ‘ImagickException’ with message ‘WriteBlob Failed xxxx. Setelah dicari-cari error itu ternyata eh ternyata, imagick bermasalah ketika define relative path pada $upload_path_url. Solusinya, ganti saja menjadi realpath.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public function convert_to_png() {
    $upload_path_url = '/var/www/upload_test/png/';
    $usmap = 'usmap.svg';
    $im = new Imagick();
    $svg = file_get_contents($upload_path_url . $usmap);
    $im->readImageBlob($svg);
    $im->setImageFormat("png32");
    $im->resizeImage(720, 445, imagick::FILTER_LANCZOS, 1);

    if(!$im->writeImage($upload_path_url . 'usmap.png')) {
        echo 'Gagal';
    } else {
        echo 'Berhasil';
    }
   
    $im->clear();
    $im->destroy();
}

Kalau pakai CI, bisa pake FCPATH ya 🙂
Errornya tidak muncul, dan proses convert SVG ke PNG berhasil 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: