私はusersという名前のテーブルを持ち、各行(ユーザ)には画像があります。mysqlに保存された画像からサムネイルを作成します
画像は、このコードを使用してMySQLデータベースにBLOBとして格納されている:
$filename = $_FILES['image']['tmp_name'];
$size = getimagesize($filename);
$handle = fopen($filename , "rb");
$content = fread($handle , filesize($filename));
fclose($handle);
unlink($filename);
$image = base64_encode($content);
// .... send query to database ....
これは、最初に働いたが、より多くの画像が各ページに表示されなければならないように、それが実際にロードされますですから、PHPのGDを使ってサーバのファイルシステムに保存されているサムネイルを作成したいと思います。
私は次のコードを持っていますが、サムネイルを作成できるように、データベースからイメージを読み取るために何をすべきかわかりません。
$query = "SELECT * FROM users;";
$result = mysql_query($query);
while($row = mysql_fetch_array($result)) {
$uploaded_image = base64_decode($row['image']);
$size = getimagesize($uploaded_image); <--------------------
$dimension_x = 73;
$dimension_y = 73;
$directory = 'views/images/generated/people/';
do{
$filename = random_32();
$filename = $directory.$filename.'.jpg';
} while(file_exists($filename));
$image = imagecreatefromjpeg($uploaded_image);
$thumb = imagecreatetruecolor($dimension_x , $dimension_y);
$size = getimagesize($uploaded_image);
imagecopyresampled($thumb , $image , 0 , 0 , 0 , 0 , $dimension_x , $dimension_y , $size['0'], $size['1']);
imagejpeg($thumb , $filename , 100);
}
私は、矢印がスクリプトを動作させるためにどこに置くべきかを探そうとしています。
はすべてそれが今、データベース内のすべてのエントリに対して出力
Warning: getimagesize(ÿØÿà): failed to open stream: No such file or directory in /var/www/play/ns4/models/create_thumbs_people.php on line 12
あるん。
---- EDIT ----
は言及を忘れ、random_32は()画像が命名されているように、32文字のランダムな文字列を生成する関数です。
私はあなたのコードを試して、imagecopyresampledの値を変更しました。それは魅力的でした! – ppp