0

我们有一个 android 应用程序,我们希望通过 PHP 中的 POST 从来自 android 应用程序的图像中保存 2 个输出图像。
我们的问题是未指定图像类型,并且来自应用程序的任何类型的所有图像都带有 .png 扩展名。就像我现在一样,要调整图像的大小,我们现在应该调整它的类型。
那么如何使用这个类来调整未知类型图像的大小并将其保存到文件中呢?

我的代码:

if (isset($_FILES["img1"])){
    move_uploaded_file($_FILES["img1"]["tmp_name"] , "../../spl_img/".$gallery_id."-img1.png");

    $address = "../../spl_img/".$gallery_id."-img1.png";
    $resizeObj = new resize($address);
    $resizeObj -> resizeImage(80, 'portrait');
    $resizeObj -> saveImage("../../spl_img_thumb/".$gallery_id."-img1.png", 100);

当我想使用 jpg 类型和 png 扩展名调整图像大小时收到的错误:

Warning: imagecreatetruecolor() expects parameter 2 to be long, string given in /home/porsojoy/public_html/webservice/spl_img/resize-class.php on line 76

Warning: imagecopyresampled() expects parameter 1 to be resource, null given in /home/porsojoy/public_html/webservice/spl_img/resize-class.php on line 77

Warning: imagejpeg() expects parameter 1 to be resource, null given in /home/porsojoy/public_html/webservice/spl_img/resize-class.php on line 217

Warning: imagedestroy() expects parameter 1 to be resource, null given in /home/porsojoy/public_html/webservice/spl_img/resize-class.php on line 246
4

1 回答 1

0

使用 exif 方法检查图像类型比
在点之后查找文件扩展名更准确。

您可以覆盖类中的函数“openImage()”。

            private function openImage($file)
        {

           switch (exif_imagetype($file))
            {
                    case IMAGETYPE_GIF:
                        $img = @imagecreatefromgif($file);
                    break;

                    case IMAGETYPE_JPEG:
                        $img = @imagecreatefromjpeg($file);
                    break;

                    case IMAGETYPE_PNG:
                        $img = @imagecreatefrompng($file);
                    break;

            }

            return $img;
        }

不要忘记在 php.ini 文件中启用 EXIF 扩展

在 Windows 上取消注释以下这些行:
extension=php_mbstring.dll
extension=php_exif.dll

更多信息:php.net/exif

于 2013-08-26T23:12:59.587 回答