メコログ

web関連の話や、日々の雑記を書こうと思っています。

mysqlに画像を保存するプログラム[php]

mysqlで画像扱うphpプログラムを作成しました。(動作確認済み
プログラムを扱う際のデータベースの設定も記述します。これで、mysqlで画像をバッチリ扱えるようになると思います。
 
 

プログラム内容

  • 画像をデータベースに保存するプログラム
  • データベースから画像を呼び出し、表示するプログラム

 
 

プログラムを利用するための設定

データベースの設定
ホスト名 データベース名 テーブル名 ユーザ名 パスワード
localhost test_field img_table root なし
テーブルの設定

こんな内容のテーブルをphpMyAdminを使うなどして作成してください。

各カラムの役割 id_col(画像の管理番号) img_col(画像の格納)

ここで画像を保存する際にmediumblobを今回は用いていますが、データベースで扱う画像のサイズによってここは変える必要があります。

扱う画像のサイズと種別の対応表
種別 最大のサイズ
TINYBLOB 256 byte
BLOB 64 KB
MEDIUMBLOB 16 MB
LONGBLOB 4 GB

これで、データベースの設定は終わりです。次にプログラムを利用してみましょう。
 
 

プログラムの利用

set_img.php(画像をデータベースに保存するプログラム
<?php
//データベースに接続する変数名を宣言しておく
define( 'DB_HOST', 'localhost' );
define( 'DB_USER', 'root' );
define( 'DB_PASS', '' );
define( 'DB_NAME', 'test_field' );

//データベースに接続する	
$db_link = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);

//取得する画像のリンク
$img_url = 'http://cdn-ak.f.st-hatena.com/images/fotolife/m/mekori/20130503/20130503074329.jpg';

// 画像の取得
$img_file = file_get_contents( $img_url );

//画像取得が成功した場合
if($img_file){	

	//画像をバイナリに変換
	$img_binary = mysqli_real_escape_string( $db_link, $img_file );
	
	//画像を保存するSQL文の実行
	$result = mysqli_query( $db_link, 'INSERT INTO img_table (img_col) VALUES ( "'.$img_binary.'" )');
	
	//結果の表示
	if($result){echo "画像をデータベースに保存しました。";}else{
		echo "保存できませんでした。";
		}
}

?>


view_img.php(データベースから画像を呼び出し表示するプログラム
<?php
//データベースに接続する変数名を宣言しておく
define( 'DB_HOST', 'localhost' );
define( 'DB_USER', 'root' );
define( 'DB_PASS', '' );
define( 'DB_NAME', 'test_field' );


//下の2つの関数を使い、id_colが1の画像を表示する。
CallImg(1);


//指定したid_colを持つ画像を表示する関数
function CallImg($id_col_num){
	echo '<img src="'.ImgSearchDB($id_col_num).'">';
}

//データベースから、指定したid_colを持つimageファイルを検索する関数。
function ImgSearchDB($id_col_num){
		
	//データベースへ接続する
	$db_link = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
	
	//指定したidのimgを検索
	$serch_query = mysqli_query($db_link,"SELECT * FROM `img_table` WHERE `id_col` ='".$id_col_num."'");
	$row = mysqli_fetch_array($serch_query);
	
	header( 'Content-Type: image/jpeg' );
	echo $row['img_col'];
	
	$close_flag = mysqli_close($db_link);
}
?>
プログラムの解説
  • set_img.phpの$img_urlで画像のリンクを指定し、ファイルを実行するとデータベースに画像が保存されます。
  • view_img.phpを実行すると、CallImg()関数が実行されます。今回は引数に1が設定されているのでid_colが1に対応する画像が表示されます。

 
 
方法の解説は以上です。
引数をGETやPOSTの値に設定したりすると、よりサービスに実用的な感じになるかと思います。

「統計が最強の学問である」のレビュー

最近ビッグデータやデータマイニング等が流行っているようなので、それに関係しそうな「統計学が最強の学問である」を読んでみました。

主な内容

統計学データマイニングとして実際に用いる方法や、例などの紹介を期待していたのですが、主な内容は

ということで、統計学をある程度噛ったことのある人が読み物として読むとしたら楽しい内容だと思います。これを読んで統計学の勉強をしようという人には全くオススメしません。なぜならば、作中で紹介される統計的手法の用例が極端すぎ、また手法の数学的説明がほぼ無いのでふむふむと思って読んでも実際に分析を使用する際には躓くと思われます。そして、内容が作者の専攻していた生物統計学に偏り過ぎに感じました。
 
 
スタンスや歴史的理解も話としては面白いのですが、分析の際には割とはどうでもいい事なので、パラパラっと購入前に読んだ時に目についた図が綺麗だったことやタイトルに騙された感が否めません。最後まで統計学が最強の学問である理由もよく分かりませんでしたし…。期待していた分、批判的になってしまいましたが知って良かった点も幾つかあったので紹介したいと思います。

 
 

良かった点

  • 様々ある統計分析ソフトの名前と解説が一覧表となっていて、各ソフトが得意とすることが分かる。
  • サンプル数を4000人から8000人と倍にしても、推定精度がたった1%しか向上しないということ
  • 一般化線形モデルをまとめた表で、各分析の関係性が分り易く説明されている

 
 

気になった点

  • 因子分析の説明をしているつもりでしょうが、説明内容が主成分分析になっています。他の統計学の本で間違えているのを見たことが無いのですが…
  • データマイニングの話をするなら、多変量解析の話を詳しくして欲しかった。
  • ランダムの話を哲学的な所まで掘り下げているが、正直どうしようもないよねと思った。
  • 研究の紹介をするならば、論文を引用して欲しい

 
 
まとめると、他にもっと統計学の良い本があると言えます。
統計学を理解するには大村平さんの本が簡単でおすすめです。
実践的に分析してみる場合は統計局やビッグデータを公開している所からデータを拾ってきて、R関連の書籍を読んで実践したほうがいいと思います。

統計のはなし―基礎・応用・娯楽 (Best selected business books)

統計のはなし―基礎・応用・娯楽 (Best selected business books)


多変量解析のはなし―複雑さから本質を探る (Best selected Business Books)

多変量解析のはなし―複雑さから本質を探る (Best selected Business Books)


統計学が最強の学問である

統計学が最強の学問である

はてなブログで画像を中央揃えにする方法

はてなブログで画像を中央揃えにしようと思ったところ、画像が全画面?的なもの以外中央揃えにならず、縮小化すると左揃えになりバランスが悪いということで、その解決方法をメモ

CSSを書き換えているので細かい設定が出来なくなります。
  • メリット
    • 画像が全て中央揃えになる。
  • デメリット
    • 画像の横にテキストを書く記法が使えなくなる。

 
 

手順

  • 1.管理のデザインをクリック
  • 2.カスタマイズを選択
  • 3.デザインCSSの一番下の行に以下の内容を追加
img.hatena-fotolife, img.http-image {
display: block;
margin: 0px auto;
}

 
 
 
 
これで画像が中央揃えで表示されるようになると思います。