Pixelfed内部の画像リサイズ処理、Intervention Imageライブラリを介してGDかImageMagickに投げられるのだけど、元の画像が大きいとそれを開くだけでメモリをやたら食うので、JPEGヒントを活用して改善できないか考えている。VPSのメモリに限りがあるので、ピンポイントでしか動かない処理のためにジョブワーカーに割り当てるメモリをあまり増やしたくない。
ImageMagickを使えば可能そうだが、Intervention ImageがJPEGヒントの指定に対応していない感じ。どうしようね。
これ、どうもPixelfedのオリジナルではなくて、オリジナルライブラリがあるようだ。
https://github.com/kornrunner/php-blurhash
それはともかく、高々640x480の画像に対するBlurhash計算が128MBで足りないのは本当か?実験してみよう。
ローカルのテスト用環境で、Pixelfedが動いているPHPのコンテナに拡張モジュールをインストールして動かしてみた。
RSS 25128KBなので、130MBほど減らせた。しかも実行時間も1回あたり2秒→0.1秒にまで短縮。これなら上出来!
あとはPixelfed側のBlurHash生成コードを書き換えれば完成だ。