OpenPNE で写真のアップロード機能を作成していて調べたことをまとめておきます。

画像を保存するテーブル c_image

OpenPNE では画像をDB に保存しています。保存するテーブル名は c_image です。
このテーブルにはプロフィール写真や日記の写真、スキンの画像などが保存されるようです。

CREATE TABLE c_image (
  c_image_id int(11) NOT NULL auto_increment,
  filename text NOT NULL,
  bin longblob NOT NULL,
  r_datetime datetime NOT NULL default '0000-00-00 00:00:00',
  `type` text,
  PRIMARY KEY  (c_image_id),
  KEY filename (filename(100))
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
filename
画像のファイル名、任意につけていいみたいですが、プロフィール写真だと
m_2_1188204858.jpg
という感じです。
最初の 「m 」はたぶんプロフィール写真を表す文字、
次の「2」はプロフィール写真のNo(2番目にアップした写真)
次の10桁の数字は多分 time() 関数で取得したアップロードした時間
bin
base64_encode した画像ファイルのバイナリデータ
type
画像のタイプ( jpg | gif | png )
r_datetime
登録日時

表示方法

c_image テーブルに格納した画像を表示するHTML
<img src="/img.php?filename=m_2_1188204858.jpg&w=180&h=180&m=pc">

Smarty のタグで書くと
<img src="({t_img_url filename=$pet.image1 w=180 h=180})">

filename に c_image.filename を指定して、
w, h に幅と高さの最大値を指定する。
幅と高さは最大値を超えると自動的にリサイズする。

その他

c_image に画像を保存しておくと管理画面からアップロードされた写真をすべて管理することができるので、SNS を運営する上で便利だと思います。

関連する投稿