Php 为社交网站存储个人资料图片最有效的方法是什么?
我建立了一个简单的社交网络,让用户能够上传个人资料照片。问题是,我已经把它设置好了,这样上传的图片大小就可以调整到两个大小,这两个大小在我的网站设计中使用。但是,客户需要在一段时间后更改设计。新的设计构思要求图像的尺寸不同。这就像运行了2年的网站,我们有很多用户的个人资料图片Php 为社交网站存储个人资料图片最有效的方法是什么?,php,image-processing,Php,Image Processing,我建立了一个简单的社交网络,让用户能够上传个人资料照片。问题是,我已经把它设置好了,这样上传的图片大小就可以调整到两个大小,这两个大小在我的网站设计中使用。但是,客户需要在一段时间后更改设计。新的设计构思要求图像的尺寸不同。这就像运行了2年的网站,我们有很多用户的个人资料图片 在这一点上,我认为我在将图像大小调整为固定大小时犯了一个错误,因为现在我将不得不对系统上已设置的所有图像的大小进行调整,以便使用新设计进行设置。这就引出了一个问题——在服务器上维护不同大小的图像的最佳方式是什么?我认为没有
在这一点上,我认为我在将图像大小调整为固定大小时犯了一个错误,因为现在我将不得不对系统上已设置的所有图像的大小进行调整,以便使用新设计进行设置。这就引出了一个问题——在服务器上维护不同大小的图像的最佳方式是什么?我认为没有任何社交网络会在设计变更过程中改变图像大小。。。这有一个很好的理由
我想您可以保留图像的最高分辨率版本,并从中批量处理大量新图像,将图像尺寸作为文件名的一部分,以便可以轻松地对其进行分组。取决于图像的绝对数量(如果太多,这可能不切实际),我会将原始图像保留在一个永久点上,并将调整大小的图像保留在另一个缓存点上,以备下次客户端决定更改规格时使用。:-)
如果空间有限,并且您不关心缓存已调整大小的图像,您可以使用php的库动态调整它们的大小。我发现最好创建缩略图脚本并动态调整照片大小,这样您可以存储更多图片。它将使您的硬盘使用率降低50%;但这会给页面加载增加几毫秒。如果您想省去一次调整所有页面大小的麻烦,您可以使用一个条件来检查其大小是否已调整为新大小,然后在首次访问图像时调整大小
$edit_file = $_edit_id.'_'.basename($_FILES['edit_imagename']['name']);
$uploadfile = $orig_uploaddir . $edit_file;
if (move_uploaded_file($_FILES['edit_imagename']['tmp_name'], $uploadfile))
{
//---resize image to regular and thumbnail-----------------------------------b
$src = imagecreatefromjpeg($uploadfile);
$image_info=getimagesize($uploadfile);
list($width,$height)=$image_info;
//---create 400x400 fullsize--------------b
$newwidth=400;
$newheight=round(($height/$width)*$newwidth);
if ($newheight>400)
{
$newheight=400;
$newwidth=round(($width/$height)*$newheight);
}
$tmp=imagecreatetruecolor($newwidth,$newheight);
imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
$filename = $uploaddir . $_edit_id.'_400_'.basename($_FILES['edit_imagename']['name']);
imagejpeg($tmp,$filename,100);
//---create 400x400 fullsize--------------e
//---create 200x200 thumbnail--------------b
$tn_width=200;
$tn_height=round(($height/$width)*$tn_width);
if ($tn_height>200)
{
$tn_height=200;
$tn_width=round(($width/$height)*$tn_height);
}
$tmp=imagecreatetruecolor($tn_width,$tn_height);
imagecopyresampled($tmp,$src,0,0,0,0,$tn_width,$tn_height,$width,$height);
$filename = $uploaddir . $_edit_id.'_200_'.basename($_FILES['edit_imagename']['name']);
imagejpeg($tmp,$filename,100);
//---create 200x200 thumbnail--------------e
imagedestroy($tmp);
这里的一般良好做法(如果您能够根据用户基数支付存储费用)是保留一个“原始”版本,该版本比您希望在站点上实际显示的版本大,以便在以后由于重新设计而出现需要时可以重新处理。