さて 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 って本当にプログラミングは楽チンだよね。