社交网站中存储个人资料图片的最有效方法是什么?

3
我已经建立了一个简单的社交网络,并为用户提供了上传个人资料照片的功能。问题在于,我已经设置了上传后将图片调整为两种尺寸,这些尺寸用于我的网站设计。然而,客户要求在一段时间后进行设计更改。新的设计想法需要不同大小的图片。这就像运行网站2年后,我们有很多带有个人资料图片的用户。
现在我认为我在将图像调整为固定尺寸时犯了一个错误,因为现在我必须为所有已经存在于系统中的图像进行调整,以便与新设计相匹配。这引出了一个问题 - 如何最好地维护服务器上的图像,以便在不同大小下查看?
4个回答

1

根据图片的数量(如果太多,这可能不切实际),我建议将原始图片保存在永久位置,并将调整大小后的图片保存在不同的缓存位置,以备客户下次更改规格时使用。 :-)

如果空间有限且您不关心缓存调整大小后的图像,则可以使用php的GD库即时调整大小。


0

如果您想避免一次性调整所有图像的麻烦,您可以使用条件语句来检查它是否已经被调整为新大小,然后在第一次访问图像时将其调整为所需大小。

  $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); 

0

我认为在设计变更过程中,没有任何社交网络会改变其图像尺寸... 这背后有一个非常好的原因。

我猜你可以保留图像的最高分辨率版本,并从中批量处理大量新图像,将图像尺寸作为文件名的一部分,以便轻松地进行分组。


1
通常的最佳实践(如果您可以根据用户基数大小承受存储成本)是保留一个“原始”版本,其大小大于您实际想要在网站上显示的大小,以便以后由于重新设计而需要重新处理。 - AvatarKava

-1
我认为最好创建一个缩略图脚本并动态调整照片大小,这样您可以存储更多的图片。这将减少您硬盘驱动器的使用量50%;但它会增加页面加载时间几毫秒。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接