画像のサムネイルを作成したい場合にphpで自動でできると便利です。 そこでimagemagickを使用します。
$data_dir = 'data';
$input_image = "my.jpg";
$output_image = "th_".$input_image;
$image = file_get_contents("{$data_dir}/$input_image");
$im = new Imagick();
$im->pingImageBlob($image);
$org_width = $im->getImageWidth();
$org_height = $im->getImageHeight();
echo 'original image size : ' . $org_width . ' x ' . $org_height ."<br>\n";
$size = $org_width;
if ( $org_width > $org_height){ $size = $org_height; }
$width = $size;
$height = $size;
$im->readImage("{$data_dir}/$input_image");
$im->cropThumbnailImage($width, $height);
$im->writeImage("{$data_dir}/$output_image");
echo "thumbnail created : {$data_dir}/$output_image";
PHPから動的にPDFを生成し出力やプリントするには古くは【FPDF】を使用しましたが、現在では【TCPDF】を使用します。 TCPDFを利用するメリットは以下のとおり
・文字コード「UTF-8」が使用できる
・TTFフォントを変換しなくても使用できる(自動変換が行われる)
http://sourceforge.net/projects/tcpdf/files/ からダウンロードしてフォルダごとサーバにアップロード
【tcpdf/fonts】の中に【ttf】フォルダを作ってそこにフォントファイルをアップロードします。
デフォルトで入っている「Helvetica」と自分でアップロードした「IPAゴシック」を使ってPDF出力する例
「IPAゴシック」のフォントファイルは http://ipafont.ipa.go.jp/old/ipafont/download.html からダウンロードし
( ./tcpdf/fonts/ttf/ipaexg.ttf )に置いておきます
require_once('tcpdf/tcpdf.php');
$pdf = new TCPDF("L", "mm", "A4", true, "UTF-8" );
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
$pdf->AddPage();
$font = new TCPDF_FONTS();
// フォント:helvetica
$font_0 = $font->addTTFfont( 'フォントファイルまでのフルパス/helvetica.php');
$pdf->SetFont($font_0 , '', 32,'',true);
$pdf->Text(0, 0, "alphabetica ABCDEFG" );
// フォント:IPAゴシック
$font_1 = $font->addTTFfont('フォントファイルまでのフルパス/ipaexg.ttf');
$pdf->SetFont($font_1 , '', 32,'',true);
$pdf->Text(0, 15, "美しい日本語のフォントを表示" );
$pdf->Output("cd_cover_template.pdf", "I");
画像ファイルの width, height を取得して挿入するSmarty Plugin
<?php function smarty_modifier_image_wh($file_name='') { if (! $file_name ) { return "error:{$file_name}"; } if (!is_file($file_name)) { return "error:{$file_name}"; } list($width, $height, $type, $attr) = getimagesize($file_name); if ($width && $height){ return 'width="' .$width. '" height="'.$height.'"'; } else{ return "error: can not get width height:{$file_name}"; } }
<img src="{$image_file}" {$image_file|image_wh} />{/if}
とすると width="100" height="200" といった情報が入ります。
{$image_file|image_wh} ↓ {"`$data_dir`/`$image_file`"|image_wh}
とします。
PHPで画象を切り抜き・縮小し、サムネイルを作成するには次のパッケージを使用するのが簡単でおすすめです。
intervention/image - Packagist(★6067)
eventviva/php-image-resize - Packagist(★425)
composer require intervention/image
use Intervention\Image\ImageManagerStatic as Image;
require_once __DIR__ . '/vendor/autoload.php';
// Resize By intervention/image
$img = Image::make("myfile.jpg");
$img->fit(600, 800);
$img->save("myfile.jpg");
composer require eventviva/php-image-resize
use \Eventviva\ImageResize;
// Resize By eventviva/php-image-resize
$image = new ImageResize("myfile.jpg");
$image->crop(600, 800);
$image->save("myfile.jpg");
どちらもおすすめです。
$ext = pathinfo($filename, PATHINFO_EXTENSION);
$ext = pathinfo($filename, PATHINFO_DIRNAME);
$filename_only = pathinfo($original_file_name, PATHINFO_FILENAME);
です。
画像ファイルに人物(顔が含まれるかどうか?)を判断するには openCV というのを使用します。
yum -y install opencv
tar zxvf re2c-0.12.2.tar.gz cd re2c-0.12.2 ./configure make su make install
http://hirokawa.netflowers.jp/entry/4874/
apachectl graceful
$filename = 'test.jpeg'; $info = getimagesize($filename); print_r($info); 出力例 ( [0] => 160 [1] => 144 [2] => 2 [3] => width="160" height="144" [bits] => 8 [channels] => 3 [mime] => image/jpeg )
$filename = 'test.jpeg'; $jpeg = imagecreatefromjpeg($filename); $rgb = imagecolorat($jpeg,0,0); $info = imagecolorsforindex($jpeg,$rgb); $r = sprintf("%02x",$info['red']); $g = sprintf("%02x",$info['green']); $b = sprintf("%02x",$info['blue']); print "r:{$r} g:{$g} b:{$b} ";
gd_info — 現在インストールされているGDライブラリに関する情報を取得する getimagesize — 画像の大きさを取得する image_type_to_extension — 画像形式からファイルの拡張子を取得する image_type_to_mime_type — getimagesize, exif_read_data, exif_thumbnail, exif_imagetypeから返される 画像形式のMIMEタイプを取得する image2wbmp — ブラウザまたはファイルにイメージを出力する imagealphablending — イメージのブレンドモードを設定する imageantialias — アンチエイリアス機能を使用すべきかどうかを判断する imagearc — 部分楕円を描画する imagechar — 水平に文字を描画する imagecharup — 垂直に文字を描画する imagecolorallocate — 画像で使用する色を作成する imagecolorallocatealpha — 画像で使用する色を透過度を指定して作成する imagecolorat — ピクセルの色のインデックスを取得する imagecolorclosest — 指定した色に最も近い色のインデックスを取得する imagecolorclosestalpha — 指定した色+アルファ値に最も近い色のインデックスを取得する imagecolorclosesthwb — 色合い、白、黒を有する色のインデックスを得る imagecolordeallocate — イメージの色リソースを開放する imagecolorexact — 指定した色のインデックスを取得する imagecolorexactalpha — 指定した色+アルファ値のインデックスを取得する imagecolormatch — パレットイメージの色を True カラーイメージに近づける imagecolorresolve — 指定した色または出来るだけ近い色のインデックスを得る imagecolorresolvealpha — 指定した色+アルファ値または最も近い色のインデックスを取得する imagecolorset — 指定したパレットインデックスの色を設定する imagecolorsforindex — カラーインデックスからカラーを取得する imagecolorstotal — 画像パレットの色数を検出する imagecolortransparent — 透明色を定義する imageconvolution — div および offset の係数を使用し、3x3 の畳み込み配列を適用する imagecopy — 画像の一部をコピーする imagecopymerge — イメージの一部をコピー、マージする imagecopymergegray — グレースケールでイメージの一部をコピー、マージする imagecopyresampled — 再サンプリングを行いイメージの一部をコピー、伸縮する imagecopyresized — 画像の一部をコピーしサイズを変更する imagecreate — パレットを使用する新規画像を作成する imagecreatefromgd2 — GD2 ファイルまたは URL から新規イメージを生成する imagecreatefromgd2part — GD2 ファイルまたは URL の指定した部分から新規イメージを生成する imagecreatefromgd — GD ファイルまたは URL から新規イメージを生成する imagecreatefromgif — ファイルまたは URL から新規画像を作成する imagecreatefromjpeg — ファイル又は URL から新規 JPEG 画像を作成する imagecreatefrompng — ファイルまたは URL から新規 PNG 画像を作成する imagecreatefromstring — 文字列の中のイメージストリームから新規イメージを作成する imagecreatefromwbmp — ファイルまたは URL から新規イメージを作成する imagecreatefromxbm — ファイル又は URL から新規イメージを生成する imagecreatefromxpm — ファイルまたは URL から新規イメージを生成する imagecreatetruecolor — TrueColor イメージを新規に作成する imagedashedline — 破線を描画する imagedestroy — 画像を破棄する imageellipse — 楕円を描画する imagefill — 塗り潰す imagefilledarc — 楕円弧を描画し、塗りつぶす imagefilledellipse — 塗りつぶされた楕円を描画する imagefilledpolygon — 塗りつぶした多角形を描画する imagefilledrectangle — 塗りつぶした矩形を描画する imagefilltoborder — 特定色で塗りつぶす imagefilter — 画像にフィルタを適用する imagefontheight — フォントの高さを取得する imagefontwidth — フォントの幅を取得する imageftbbox — freetype2 によるフォントを用いたテキストを囲む箱を取得する imagefttext — FreeType 2 によるフォントを用いてイメージにテキストを描画する imagegammacorrect — GD イメージにガンマ補正を適用する imagegd2 — GD2 イメージをブラウザまたはファイルに出力する imagegd — GD イメージをブラウザまたはファイルに出力する imagegif — ブラウザまたはファイルへ画像を出力する imagegrabscreen — 画面全体をキャプチャする imagegrabwindow — ウィンドウをキャプチャする imageinterlace — インターレースを有効もしくは無効にする imageistruecolor — 画像が truecolor かどうか調べる imagejpeg — 画像をブラウザまたはファイルに出力する imagelayereffect — アルファブレンディングフラグを設定し、 libgd にバンドルされているレイヤ効果を使用する imageline — 直線を描画する imageloadfont — 新しいフォントを読み込む imagepalettecopy — あるイメージから他のイメージにパレットをコピーする imagepng — PNG イメージをブラウザまたはファイルに出力する imagepolygon — 多角形を描画する imagepsbbox — PostScript Type1 フォントを用いてテキスト矩形のバウンディングボックスを指定する imagepsencodefont — フォントの文字エンコードベクトルを変更する imagepsextendfont — フォントを展開または圧縮する imagepsfreefont — PostScript Type 1 フォント用メモリを解放する imagepsloadfont — ファイルから PostScript Type 1 フォントをロードする imagepsslantfont — フォントを傾ける imagepstext — PostScript Type1 フォントを用いて画像の上に文字列を描く imagerectangle — 矩形を描画する imagerotate — 指定された角度で画像を回転する imagesavealpha — PNG 画像を保存する際に(単一色の透過設定ではない)完全な アルファチャネル情報を保存するフラグを設定する imagesetbrush — 線の描画用にブラシイメージを設定する imagesetpixel — 点を生成する imagesetstyle — 線描画用のスタイルを設定する imagesetthickness — 線描画用の線幅を設定する imagesettile — 塗りつぶし用のイメージを設定する imagestring — 文字列を水平に描画する imagestringup — 文字列を垂直に描画する imagesx — 画像の幅を取得する imagesy — 画像の高さを取得する imagetruecolortopalette — TrueColor イメージをパレットイメージに変換する imagettfbbox — TypeType フォントを使用したテキストの bounding box を生成する imagettftext — TrueType フォントを使用してテキストを画像に書き込む imagetypes — この PHP がサポートしている画像形式を返す imagewbmp — ブラウザまたはファイルにイメージを出力する imagexbm — XBM 画像をブラウザあるいはファイルに出力する iptcembed — バイナリ IPTC データを JPEG イメージに埋めこむ iptcparse — バイナリの IPTC ブロックのタグをパースする jpeg2wbmp — JPEG イメージファイルから WBMP イメージファイルに変換する png2wbmp — PNG イメージファイルから WBMP イメージファイルに変換する