Php 为什么这位受欢迎的作者将所有图像转换为.jpg?

Php 为什么这位受欢迎的作者将所有图像转换为.jpg?,php,image,jpeg,Php,Image,Jpeg,下面的代码是从O'Reilly的一本学习PHP、MySQL和JavaScript的书中修改而来的,可以找到 为什么所有图像类型都转换为.jpg jpg是否提供最佳的质量/尺寸比 public static function upload() { $email=$_SESSION['email']; $path1="i8.jpg"; $path2="z_p/$email.jpg"; $path3="i9.jpg"; $path4

下面的代码是从O'Reilly的一本学习PHP、MySQL和JavaScript的书中修改而来的,可以找到

为什么所有图像类型都转换为.jpg

jpg是否提供最佳的质量/尺寸比

  public static function upload()
    {    
    $email=$_SESSION['email'];
    $path1="i8.jpg";
    $path2="z_p/$email.jpg";
    $path3="i9.jpg";     
    $path4="z_p/$email-1.jpg";     
    if(move_uploaded_file($_FILES['ufile']['tmp_name'], $path2))
      {
      $typeok=TRUE;
      switch($_FILES['ufile']['type'])
        {
        case "image/gif":   
          $src = imagecreatefromgif($path2); 
          break;
        case "image/jpeg":  
        case "image/pjpeg": 
          $src = imagecreatefromjpeg($path2); 
          break;
        case "image/png":   
          $src = imagecreatefrompng($path2); 
          break;
        default:            
          $typeok = FALSE; 
          break;
        }  
      if($typeok)
        {
        list($w, $h) = getimagesize($path2);

        $tw  = $w;
        $th  = $h;

        /*Run 1*/

        $max = 50;
        if($w > $h && $max < $w)
          {
          $th = $max / $w * $h; 
          $tw = $max;
          }  
        elseif ($h > $w && $max < $h)
          {
          $tw = $max / $h * $w; 
          $th = $max;
          } 
        elseif ($max < $w)
          {
          $tw = $th = $max;
          } 
        $dst = imagecreatetruecolor($tw, $th);
        imagecopyresampled($dst, $src, 0, 0, 0, 0, $tw, $th, $w, $h);           
        imagejpeg($dst, $path2);
        imagedestroy($dst); 

        /* Rune 2 */

        $max = 20;
        if($w > $h && $max < $w)    
          {
          $th = $max / $w * $h; 
          $tw = $max;
          }  
        elseif ($h > $w && $max < $h)
          {
          $tw = $max / $h * $w;     
          $th = $max;
          } 
        elseif ($max < $w)
          {
          $tw = $th = $max;
          }
        $dst = imagecreatetruecolor($tw, $th);
        imagecopyresampled($dst, $src, 0, 0, 0, 0, $tw, $th, $w, $h);       
        imagejpeg($dst, $path4);
        imagedestroy($dst);
        imagedestroy($src);
        }
      }
    else
      {
      copy($path1, $path2);
      copy($path3, $path4);
      }
    }
公共静态函数上传()
{    
$email=$_会话['email'];
$path1=“i8.jpg”;
$path2=“z_p/$email.jpg”;
$path3=“i9.jpg”;
$path4=“z_p/$email-1.jpg”;
如果(移动上传的文件($文件['ufile']['tmp\U名称']],$path2))
{
$typeok=TRUE;
开关($\u文件['ufile']['type'])
{
案例“image/gif”:
$src=imagecreatefromformgif($path2);
打破
案例“图像/jpeg”:
案例“图像/pjpeg”:
$src=imagecreatefromjpeg($path2);
打破
案例“image/png”:
$src=imagecreatefrompng($path2);
打破
违约:
$typeok=FALSE;
打破
}  
如果($typeok)
{
列表($w,$h)=getimagesize($path2);
$tw=$w;
$th=$h;
/*运行1*/
$max=50;
如果($w>$h&$max<$w)
{
$th=$max/$w*$h;
$tw=$max;
}  
其他($h>w&$max<$h)
{
$tw=$max/$h*$w;
$th=$max;
} 
elseif($max<$w)
{
$tw=$th=$max;
} 
$dst=ImageCreateTureColor($tw,$th);
imagecopyresampled($dst、$src、0、0、0、$tw、$th、$w、$h);
imagejpeg($dst,$path2);
图像销毁($dst);
/*符文2*/
$max=20;
如果($w>$h&$max<$w)
{
$th=$max/$w*$h;
$tw=$max;
}  
其他($h>w&$max<$h)
{
$tw=$max/$h*$w;
$th=$max;
} 
elseif($max<$w)
{
$tw=$th=$max;
}
$dst=ImageCreateTureColor($tw,$th);
imagecopyresampled($dst、$src、0、0、0、$tw、$th、$w、$h);
imagejpeg($dst,$path4);
图像销毁($dst);
(1)(src);
}
}
其他的
{
副本($path1,$path2);
副本($path3,$path4);
}
}

在jpeg文件(或多种图像格式中的任何一种)中,可以隐藏许多令人讨厌的惊喜。通过始终以这种方式重新创建图像,您可以在一定程度上确信服务器发布的图像已被净化。

JPEG并不总是提供最佳大小/质量比,这取决于图像内容,如果它具有许多渐变颜色,或者是风景图片,JPEG可能是最佳选择,但是对于像截图这样的东西,PNG将提供最佳的大小/质量比。

Hmm。。。EXIF数据将是最明显的开始;有一些臭名昭著的缩略图泄漏,其中主要图片被裁剪以切断敏感信息,但缩略图仍然完整。我相信我听说过更多可以附加或交织成JPEG格式的阴险东西(例如,使用它通过您的个人资料图像传输机密数据等)。搜索web,我相信您会找到更多想法!