PHP
docker
画像解析
libpuzzle

dockerfile php + libpuzzle

さらっと類似画像検索を試したく、phpのlibpuzzleを使おうとした時のdockerfileメモ。

FROM centos:7

RUN yum -y install gd gd-devel gcc gcc-c++ make php-devel which wget
RUN cd /usr/local/src && \
    wget https://download.pureftpd.org/pub/pure-ftpd/misc/libpuzzle/releases/libpuzzle-0.11.tar.gz && \
    tar -xvzf libpuzzle-0.11.tar.gz
RUN cd /usr/local/src/libpuzzle-0.11 && \
    ./configure --with-libpuzzle && \
    make clean && \
    make && \
    make install 
RUN cd /usr/local/src/libpuzzle-0.11/php/libpuzzle && \
    phpize && \
    ./configure --with-libpuzzle && \
    make && \
    make install
RUN sed -ie '$ a extension=libpuzzle.so' /etc/php.ini

サンプル

smp.php
$a = puzzle_fill_cvec_from_file('./a.jpg');
$b = puzzle_fill_cvec_from_file('./b.jpg');
$diff1 = puzzle_vector_normalized_distance($a, $b);
echo "a-b:" . $diff1 . "\n";
# out: a-b: 0.723XXXXX

本題とは全然関係ないけど

smp.php
$img = file_get_contents("http://hoge/a.jpg");
$a = puzzle_fill_cvec_from_file($img);

だと上手くシグネチャを作ってくれなかった。