PHP の GDライブラリを使用し画像サイズを変更

シェアする

  • このエントリーをはてなブックマークに追加

サーバー内に貯まってる画像サイズを一括で変更する必要があったので作ってみました。

使用方法は、
php -f hogehoge.php 元ファイル名 リサイズファイル名 横幅(ピクセル) [縦幅]

難しくないソースなのでリサイズ時の精度等引数にしてもよいかと思います。

実際にはfind等のコマンドと組み合わせて特定ディレクトリに含まれる画像を一括変換する場合等に使用します。

<?php
    if ( $argc < 4 )
    {
        print "Usage source-filename dist-filename width [height]\n";
        return;
    }

    // 出力する画像サイズの指定
    $width = $argv[3];

    if ( !file_exists( $argv[1] ))
    {
        print "ERROR : Source File Open ( $argv[1] ) \n";
        return;
    }

    // ファイル名から画像イメージを生成
    $image = imagecreatefromjpeg( $argv[1] );

    if ( !$image )
    {
        print "ERROR : Image Create\n";
        return;
    }

    // コピー元画像のファイルサイズを取得
    list( $image_w, $image_h ) = getimagesize( $argv[1] );

    // 縦サイズが指定されていたらそれを使用する。
    if ( $argc > 4 )
    {
        $height =  $argv[4];
    }
    // 縦サイズが指定されていないときには横のサイズから縦サイズを求める。

   else
    {
        $height = ( $width/$image_w ) * $image_h;
    }

    // コピーを行う画像リソースをカラーで生成する。
    $dst_resource = imagecreatetruecolor( $width, $height );

    // 新規に作成した画像リソースに対して元画像をリサイズしてコピーする。
    $bSts = imagecopyresampled ( $dst_resource ,
                                 $image ,
                                 0 , 0 , 0 , 0 ,
                                 $width, $height ,
                                 $image_w , $image_h );

    if ( !$bSts )
    {
        print "ERROR : Image Copy\n";
        return;
    }

    // 画像を出力
    imagejpeg( $dst_resource,
               $argv[2],
               100 );

    // 使用リソース開放
    imagedestroy( $dst_resource );
    imagedestroy( $image );
?>

GDがインストールされていない場合上記ソースで使用されているライブラリは使用できません。

その場合はGDライブラリの追加インストールが必要になります。

CentOS等ではyumで追加

yum install php-gd

ubuntu等の apt-get だと、

sudo apt-get update

sudo apt-get install php5-gd

で、OKです。

Instant PHP Web Scraping
Instant PHP Web Scraping

Expert PHP and MySQL: Application Design and Development
Expert PHP and MySQL: Application Design and Development