文件上传破坏GIF图像的问题


problems on file upload breaking GIF images

你好,我已经添加了一个简单的图像调整大小,这是打破我的GIF动画。有人可以帮助我破译这里需要从我现有的代码中删除,以允许该图像上传,然后以GIF形式动画…谢谢你的建议。

 case 'addgift':
            if($adminLevel == 4)
            {
                if ($_FILES['uploadedfile']['tmp_name'] != "")
                {
                    $image = new SimpleImage();
                    $image->load($_FILES['uploadedfile']['tmp_name']);
                    $width = $image->getWidth();
                    $height = $image->getHeight();
                    if($width > 64) {
                       $height = (64/$width)*$height;
                       $width = 64;
                    }
                    if($height > 64) {
                       $width = (64/$height)*$width;
                       $height = 64;
                    }
                    $image->resize($width,$height);
                    if(preg_match("/'.(png)$/i", $_FILES['uploadedfile']['name']))
                        $type = IMAGETYPE_PNG;
                    else if(preg_match("/'.(gif)$/i", $_FILES['uploadedfile']['name']))
                        $type = IMAGETYPE_GIF;
                    else
                        $type = IMAGETYPE_JPEG;
                    $image->save("images/gifts/".$_FILES['uploadedfile']['name'], $type);
                    unlink($_FILES['uploadedfile']['tmp_name']);
                    mysql_query("INSERT INTO gifts
                                (name, image, cash, tokens)
                                VALUES ('".mysql_real_escape_string($_POST['name'])."', '".$_FILES['uploadedfile']['name']."', ".intval($_POST['cash']).", ".intval($_POST['tokens']).")");
                    mysql_query("INSERT INTO admin_actions
                                (id1, id2, action, extra, time)
                                VALUES($userid, 0, '{id1} added gift '"{extra}'".', '".mysql_real_escape_string($_POST['name'])."', UNIX_TIMESTAMP())");
                }
            }
            break;

我不知道你的库是否支持这样的事情。你所能做的就是检查图片是否已经满足大小限制,并保持它不变,以防它满足。

- $image->resize($width,$height);
- $image->save("images/gifts/".$_FILES['uploadedfile']['name'], $type);
- unlink($_FILES['uploadedfile']['tmp_name']);
+ if ($image->getWidth() == $width && $image->getHeight() == $height)
+     move_uploaded_file($_FILES['uploadedfile']['tmp_name'], "images/gifts/".$_FILES['uploadedfile']['name']);
+ else
+ {
+     $image->resize($width,$height);
+     $image->save("images/gifts/".$_FILES['uploadedfile']['name'], $type);
+     unlink($_FILES['uploadedfile']['tmp_name']);
+ }

请查看以下答案。

在不破坏动画的情况下调整GIF文件大小