有人可以帮助我,几乎所有的头发现在已经消失了。我试图将大图片上传到网站时遇到问题。我已经修好了,一切似乎都运转正常。我用10Mb + JPEG文件测试了我的脚本,看起来都很完美。但是,我刚尝试从某人手机上传JPEG(4.9Mb),我收到500错误。看看PS中的图片,尺寸为1054px宽,1874px高,72dpi。任何人都可以帮助我,为什么这是一个问题,我怎么解决它?如果我将图片缩小(700px宽),它上传得很好吗?
有没有人有同样的问题?下面是我的代码,它可以旋转图像(因为一些手机在上传时会颠倒出来),然后调整大文件的大小以便于存储。所有我试过的图片看起来都很有用......除了这个肖像,它的st wide宽!有人请帮忙!
$file_name = $_FILES['newPicture']['tmp_name'];
correctImageOrientation($file_name);
AdjustPicSize($file_name);
function correctImageOrientation($file_name) {
if (function_exists('exif_read_data')) {
$exif = exif_read_data($file_name);
if($exif && isset($exif['Orientation']) || !isset($exif['Orientation'])) {
$orientation = $exif['Orientation'];
if($orientation != 1){
$img = imagecreatefromjpeg($file_name);
$deg = 0;
switch ($orientation) {
case 3:
$deg = 180;
break;
case 6:
$deg = 270;
break;
case 8:
$deg = 90;
break;
}
if ($deg) {
$img = imagerotate($img, $deg, 0);
}
// then rewrite the rotated image back to the disk as $filename
imagejpeg($img, $file_name, 95);
} // if there is some rotation necessary
} // if have the exif orientation info
} // if function exists
}
function AdjustPicSize($file_name)
{
$maxDim = 800;
list($width, $height, $type, $attr) = getimagesize( $file_name );
if ( $width > $maxDim || $height > $maxDim ) {
$target_filename = $file_name;
$ratio = $width/$height;
if( $ratio > 1) {
$new_width = $maxDim;
$new_height = $maxDim/$ratio;
} else {
$new_width = $maxDim*$ratio;
$new_height = $maxDim;
}
$src = imagecreatefromstring( file_get_contents( $file_name ) );
$dst = imagecreatetruecolor( $new_width, $new_height );
imagecopyresampled( $dst, $src, 0, 0, 0, 0, $new_width, $new_height, $width, $height );
imagejpeg( $dst, $target_filename ); // adjust format as needed
}
}
请保持温和,我对这一切都有点新鲜!
答案 0 :(得分:0)
这是内存限制问题,您可能想要增加它或考虑使用图像magick。 GD使用RAM存储数据并从5 MB文件(大尺寸)创建新资源会花费你的内存