Pixelfed内部の画像リサイズ処理、Intervention Imageライブラリを介してGDかImageMagickに投げられるのだけど、元の画像が大きいとそれを開くだけでメモリをやたら食うので、JPEGヒントを活用して改善できないか考えている。VPSのメモリに限りがあるので、ピンポイントでしか動かない処理のためにジョブワーカーに割り当てるメモリをあまり増やしたくない。
ImageMagickを使えば可能そうだが、Intervention ImageがJPEGヒントの指定に対応していない感じ。どうしようね。
これ、どうもPixelfedのオリジナルではなくて、オリジナルライブラリがあるようだ。
https://github.com/kornrunner/php-blurhash
それはともかく、高々640x480の画像に対するBlurhash計算が128MBで足りないのは本当か?実験してみよう。
BlurHashのC言語実装をPHP拡張モジュールにコンパイルすることを試みた。高速化の効果は十分あり。あとはメモリ消費の改善効果がどれくらいあるかな。
[PHP8対応] PHP拡張モジュールを自作してBlurHashの計算を高速化する https://qiita.com/everylittle/items/21467bee51402ed33e6a
よく調べたら、Pixelfedでワーカーがメモリ不足になるの、リサイズ処理ではなくBlurhashの生成のところらしい…