1. TOPTOP
  2. Webサービス
  3. PHP

PHPとMySQLを使ってTwitter APIで取得したツィートの追加と削除を繰り返す(その6~画像の表示について)

php

今回は本文に添付されている、画像の保存と縮小作業について。Twitter APIの画像は、http://pbs.twimg….jpgというURLで、PHPの練習としてよく使われている、画像掲示板のjpgとは違うところがあります。

両者の相違点

実務としては、よくある画像掲示板のつくり方は、ドットインストールのレッスンが参考になります。しかし両者には大きな違いがあり、レッスンの通りにはできません。

Twitter APIの画像を追加する場合

  • 元画像の位置 → Twitterのサーバ上にある
  • 画像の保存 → 専用URLを文字列としてデータベース上に格納する
  • 画像縮小のタイミング → PHPから当該データを取り出したて表示されたとき

よくある画像掲示板画像をUPする場合

  • 元画像の位置 → クライアントPCにある
  • 画像の保存 → jpg形式のファイルを自分のサーバーの画像専用フォルダにいれる
  • 画像縮小のタイミング → PHPで画像が格納されているカラムがfetchされたとき

画像の保存

Twitter APIの画像は、0~4枚の画像を取得することができます。

ステータスID、スクリーンネーム、ツイート本文、ツイート日時などはツイート1つに対して、取得するデータが一つしかなく、データベースのカラムを簡単に割り当てることができます。

ステータスID、スクリーンネーム、ツイート本文、ツイート日時

イメージ的にはこんな感じでしょう。指定された変数に、パラメーターをバインドしたときの様子です

$stmt->bindParam(":tw_id", $tw_id);
$stmt->bindParam(":tw_screen", $tw_screen);
$stmt->bindParam(":tw_date", $tw_date);
$stmt->bindParam(":tw_txt", $tw_txt);

$tw_id = $tweet->id;
$tw_screen = $tweet->user->screen_name;
$tw_date = date('Y-m-d H:i:s', strtotime($tweet->created_at));
$tw_txt = $tweet->text;

画像URL

一方、ツイートに添付されている画像をバインドするときの様子です。

$stmt->bindParam(":tw_img0", $tw_img[0]);
$stmt->bindParam(":tw_img1", $tw_img[1]);
$stmt->bindParam(":tw_img2", $tw_img[2]);
$stmt->bindParam(":tw_img3", $tw_img[3]);

if (is_array($tweet->extended_entities->media)) {
	foreach($tweet->extended_entities->media as $key => $media) {
		if (isset($tweet->extended_entities->media[$key])) {
			$tw_img[key] = $tweet->extended_entities->media[$key]->media_url;
		}
		// カラムの列番号が固定的な割に、表示される画像と対応させる方法がわからない
	}
}

11行目のコメントアウトにもありますが、カラムの列番号が固定で決められている割には、foreachで取り出される、専用URLは繰り返し表示させる必要があります。
bindParamもforeachの中で使うのかなぁ?

画像縮小のタイミング

これもTwittert APIと、よくある画像掲示板では、縮小のタイミングが異なります。後者では、画像を専用フォルダにアップロードをするときに縮小をかけます。

一方、後者ではデータベースからURLの文字列を呼び出すだけなので、ファイルを加工するというタイミングが分かりません。

これも、詳しい方に聞いてみることにしましょう。

〔参考サイト〕