これは、DB から任意の画像のサイズを変更する、私が書いた古いコードです。非推奨の mysql_* を引き続き使用しますが、更新するのは簡単です。
$GET 引数、img (画像に対応するデータベースの行)、最小、最大、高さ、幅を取るように設計されています。どちらが設定されているかに応じて、絶対値を修正するか、必要なサイズに画像を合わせようとします。これにより、1 つの画像のみをアップロードして、ページのサイズを動的に変更できます。
$sql=sprintf("SELECT image,filetype,width,height FROM image WHERE imageline='%s'",mysql_real_escape_string($_GET['img']));
$result=mysql_query($sql,$dbh);
$row=mysql_fetch_assoc($result);
$filetype=($row['filetype']!="")?$row['filetype']:"image/jpeg";
$content=base64_decode($row['image']);
$newheight=0;
$newwidth=0;
if($row['height']==0||$row['width']==0)
{
header("Content-type: $filetype");
echo ($content);
die;
}
if($_GET['max']>0)
{
if($row['height']>=$row['width'])
{
$_GET['height']=($_GET['max']>$row['height'])?$row['height']:$_GET['max'];
$_GET['width']=0;
}
if($row['width']>$row['height'])
{
$_GET['width']=($_GET['max']>$row['width'])?$row['width']:$_GET['max'];
$_GET['height']=0;
}
}
if($_GET['min']>0)
{
if($row['height']<=$row['width'])
{
$_GET['height']=$_GET['min'];
$_GET['width']=0;
}
if($row['width']<$row['height'])
{
$_GET['width']=$_GET['min'];
$_GET['height']=0;
}
}
if($_GET['height']>0&&$_GET['width']==0)
{
$newheight=$_GET['height'];
$newwidth=$row['width']*($_GET['height']/$row['height']);
}
if($_GET['height']>0&&$_GET['width']>0)
{
$newheight=$_GET['height'];
$newwidth=$_GET['width'];
}
if($_GET['width']>0&&$_GET['height']==0)
{
$newwidth=$_GET['width'];
$newheight=$row['height']*($_GET['width']/$row['width']);
}
if($newheight>0&&$newwidth>0)
{
$newheight=floor($newheight);
$newwidth=floor($newwidth);
$image=imagecreatefromstring($content);
$newimage=imagecreatetruecolor($newwidth, $newheight);
imagecopyresampled($newimage, $image, 0, 0, 0, 0, $newwidth, $newheight,$row['width'], $row['height']);
header("Content-type: image/jpeg");
imagejpeg($newimage);
die;
}
header("Content-type: $filetype");
echo ($content);