さて PHP をやるといっても言語仕様なんてすぐに理解できる。
筆者はすぐ忘れる人なのでまたチップスページを作る、はいいとして。
PHP で何をやるかだ、とりあえず画像のリサイズだな。
PHPで画像をリサイズしよう!表示・保存方法もわかる | 侍エンジニア塾ブログ(Samurai Blog) – プログラミング入門者向けサイト
GD は定番として Imagick ってココ(さくら)で使えるのかな?
手持ちパソコン内だけで可能なのでは意味がないし。
と思ったけれど、どちらも問題なく使えるようだ。
【さくらのレンタルサーバ】基本仕様 ? さくらのサポート情報
ところで Fedora 自体は PHP をインストールしただけでは両方使えない。
てなわけで dnf する。
sudo dnf install php-gd php-pecl-imagick
httpd を通すのが面倒だからスクリプトで直接試す。
Linux はコレができるから楽なんだよね。
#!/usr/bin/env php
<?php
// php-gd
[$width, $hight] = getimagesize('test.jpg');
$baseImage = imagecreatefromjpeg('test.jpg');
$image = imagecreatetruecolor(100, 100);
imagecopyresampled($image, $baseImage, 0, 0, 0, 0, 100, 100, $width, $hight);
imagejpeg($image , 'out_01.jpg');
// php-pecl-imagick
$image2 = new Imagick('test.jpg');
$image2->thumbnailImage(100, 0); // Segmentation fault...
$image2->writeImage('out_02.jpg');
$image2->clear();
?>
Imagick::thumbnailImage でセグメンテーション違反になってしまうヤン。
縮小画像は問題なく作成されるけど。
下記のように起動すればこのエラーは出なくなる、けどソレでいいのか?
env MAGICK_THREAD_LIMIT=1 php test.php
おまけ、cairo も使えるんだね。
PHP: Cairo – Manual
94. PHPからCairoを使う | 日経 xTECH(クロステック)
dnf で見つからないし必要性もあまり感じないので無視するけど。
せっかくなのでリンク先コードを Python3 で書き直ししてみた。
create なんてメソッドは無いのでこんなふうに。
#!/usr/bin/env python3
import cairo
surface = cairo.PDFSurface('sample.pdf', 605.0, 855.0)
cr = cairo.Context(surface)
cr.set_source_rgb (0.0, 0.0, 1.0)
cr.move_to(150, 150)
cr.select_font_face('Monospace', cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL)
cr.set_font_size(72)
cr.show_text('日本語OK!')
cr.show_page()
# 破棄はガベージコレクション
Linux てか GNOME って本当にプログラミングは楽チンだよね。