関数を見てみようimagecreatefromstring
http://php.net/manual/en/function.imagecreatefromstring.php
$image = imagecreatefromstring($imageSrc);
if ($image !== FALSE) {
// the variable is now a valid image resource
}
クエリに関しては、複数の行が返されます。行を 1 つずつフェッチする必要があります。
$result = mysql_query("SELECT source FROM photos ORDER BY id DESC LIMIT 16");
while ($row = mysql_fetch_assoc($result)) {
$image = imagecreatefromstring($row['source']);
if ($image !== FALSE) {
// the variable is now a valid image resource
}
}
ただし、リソースを大量に消費します。より良い解決策は、画像をディスクに保存し、データベースに画像へのパスを用意することです。
また、手続き型の mysql 関数は非推奨であることにも注意してください。mysqli に移動する必要があります。
http://fr2.php.net/manual/en/book.mysqli.php
編集:あなたの質問は、あなたが望むものを指定していませんでした。このコード (テストされていません) は、ギャラリーのような方法でサイズごとにサムネイルを描画します。簡略化する方法もありますが、分かりやすいように書いてみました。
$num_columns = 4; // the number of thumbnails per row
$thumb_width = 400;
$thumb_height = 300;
$result = mysql_query("SELECT source FROM photos ORDER BY id DESC LIMIT 16");
// the actual number of results
$num_photos = mysql_num_rows($result);
$num_rows = ceil($num_photos / $num_columns);
$gallery_width = $num_columns * $thumb_width;
$gallery_height = $num_rows * $thumb_height;
// create a large empty image that will fit all thumbnails
$gallery = imagecreatetruecolor($gallery_width, $gallery_height);
$x = 0;
$y = 0;
// fetch the images one by one
while ($row = mysql_fetch_assoc($result)) {
$image = imagecreatefromstring($row['source']);
// the variable is now a valid image resource
if ($image !== FALSE) {
// grab the size of the image
$image_width = imagesx($image);
$image_height = imagesy($image);
// draw and resize the image to the next position in the gallery
imagecopyresized($gallery, $image, $x, $y, 0, 0, $thumb_width, $thumb_height, $image_width, $image_height);
// move the next drawing position to the right
$x += $thumb_width;
// if it has reached the far-right then move down a row and reset the x position
if ($x >= $gallery_width) {
$y += $thumb_height;
$x = 0;
}
// destroy the resource to free the memory
imagedestroy($image);
}
}
mysql_free_result($result);
// send the gallery image to the browser in JPEG
header('Content-Type: image/jpeg');
imagejpeg($gallery);
編集:コードで修正されたタイプミス