1 2 3 4 5 |
$master = [ '' => '----', '0' => 'aaa', '1' => 'bbb', ]; |
とかの時
1 |
var_dump($master[null]); |
ってやると
1 |
string(4) "----" |
こうなるんだね、初めて知った。
1 2 3 4 5 |
$master = [ '' => '----', '0' => 'aaa', '1' => 'bbb', ]; |
とかの時
1 |
var_dump($master[null]); |
ってやると
1 |
string(4) "----" |
こうなるんだね、初めて知った。
下記SQLを実行。
1 |
delete from wp_comments where comment_approved = '0'; |
まずDBにテーブルを作成する。
※例えばusers
テーブルを作成する。
んで次のコマンドを実行。
1 2 3 |
php bin/cake.php bake controller Users php bin/cake.php bake model Users php bin/cake.php bake template Users |
これでCRUD機能の完成。
PHPで画像周りの操作をする際はよくGDエクステンションを用いるが、GDの基本リサイズ関数であるimagecopyresized()
は縮小した際のジャギがひどく全くもって使い物にならない。
一応フィルタでスムージングもしくはガウシアンぼかしを適用できるが、やるだけ無駄。
そして多少結果がマシになるimagecopyresampled()
という関数も用意されているがこれもゴミ。~~ホントゴミ~~。
ということでこれからはPHPで画像の操作をする場合はImageMagick
を用いよう。(強制)
ようはGDより高性能で使いやすいいわゆる神エクステンション。100種類を超す形式の画像読み込みや変換に対応しており、WEBで扱うであろうファイル形式は当然いける。詳細は下記リンク。
http://php.net/manual/ja/book.imagick.php
yumを使おう。
1 |
$ yum list installed | grep php |
1 |
$ yum search imagick --enablerepo=remi | grep php |
php56-php-pecl-imagick-devel.x86_64
をインストールする。
1 |
$ yum install -y php56-php-pecl-imagick-devel.x86_64 --enablerepo=remi |
※ココから先は環境に依存する(?)場合あり。
imagick.so
をPHPのインクルードディレクトリにコピーしてやる。
※自分の場合は下記の感じ。
1 |
$ cp /opt/remi/php56/root/lib64/php/modules/imagick.so /usr/lib64/php/modules/imagick.so |
1 |
$ vim /etc/php.d/imagick.ini |
1 |
extension=imagick.so |
そしたらhttpdを再起動
phpinfo()
にて下記のように表示されていればインストール成功。
とりあえず当初からやりたかった画像のきれいなリサイズと切り抜きをやってみた。 今回は元画像の縦長、横長にかかわらず正方形になるようトリミングし、指定のサイズに縮小する処理を行いたかったのでそれをやる。
1 2 3 4 5 |
$thumbnail = new \Imagick(); // Imagickオブジェクトを生成 $thumbnail->readImage($image_path); // 入力画像パスを指定 $thumbnail->cropThumbnailImage(300, 300); // 縦横のピクセル指定 $thumbnail->setImageFormat('jpg'); // 出力フォーマットを指定 $thumbnail->writeImage($output_path); // 画像の出力パスを指定 |
これだけ。イヤほんと簡単。しかもめちゃくちゃキレイ。かなり最適化されてる。 ジャギが全く無いしGDはでスムージングを行なった処理と比較しても格が違う。そもそもの画像処理アルゴリズムが違うんだろうけど、GDがどれだけクソかわかる。
しかもサムネイル作成用の関数が用意されていて長さ指定するだけで中央から綺麗にトリミングしてくれるという至れり尽くせりっぷり。画像のフォーマット別に読み込み関数が分かれていない点も最高に使いやすいし、今後画像処理はImagickで行うことを確信した。