Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php GD/Imagick不';我不能保存我的图像_Php_Android_Gd_Imagick - Fatal编程技术网

Php GD/Imagick不';我不能保存我的图像

Php GD/Imagick不';我不能保存我的图像,php,android,gd,imagick,Php,Android,Gd,Imagick,我想从android发送一个图像,并将其保存到我的服务器中的php代码中。因为我需要保护我的服务器,我需要重新处理映像,所以我必须使用GD或Imagick。图像以base64编码发送。在php文件中进行解码,如果我使用: $img=base64_decode($img); $file = fopen('test.jpg', 'wb'); fwrite($file, $img); fclose($file); 图像保存在服务器中。如果我使用Imagick或GD,我的图像不会被保存,php文件也不

我想从android发送一个图像,并将其保存到我的服务器中的php代码中。因为我需要保护我的服务器,我需要重新处理映像,所以我必须使用GD或Imagick。图像以base64编码发送。在php文件中进行解码,如果我使用:

$img=base64_decode($img);
$file = fopen('test.jpg', 'wb');
fwrite($file, $img);
fclose($file);
图像保存在服务器中。如果我使用Imagick或GD,我的图像不会被保存,php文件也不会返回任何内容,即使我在它后面插入了一个echo。有什么帮助吗?在GD中,我使用了:

$img=base64_decode($img);
$imageinfo = getimagesize($img);
if($imageinfo['mime'] == 'image/gif'{
    $img = @imagecreatefromjpeg($img);
    imagejpeg($img, ""testt.jpg", 80);
}
在Imagick:

$img=base64_decode($img);
$img = imagick($img); //neither if I use a path of an image saved in my server 
                      //works
$mime = mime_content_type($img);
    switch ($mime):
        case 'image/jpeg':
            $ext = '.jpg';
            break;
    endswitch;

$img->stripImage();
$img->writeImage(""testt".$ext);
$img->clear();
$img->destroy();

imagick仅适用于文件,很遗憾,您无法对其进行处理,因此:

$img=base64_decode($img);
$filename = tempnam(sys_get_temp_dir(), 'tempimage_'); 
$file = fopen($filename, 'wb');
fwrite($file, $img);
fclose($file);

$img = imagick($filename);  
$mime = mime_content_type($img);
    switch ($mime):
        case 'image/jpeg':
            $ext = '.jpg';
            break;
   endswitch;

$img->stripImage();
$img->writeImage("testt".$ext);
$img->clear();
$img->destroy();

从理论上讲,这应该是可行的。

imagick只适用于文件,很遗憾,您无法处理它,因此:

$img=base64_decode($img);
$filename = tempnam(sys_get_temp_dir(), 'tempimage_'); 
$file = fopen($filename, 'wb');
fwrite($file, $img);
fclose($file);

$img = imagick($filename);  
$mime = mime_content_type($img);
    switch ($mime):
        case 'image/jpeg':
            $ext = '.jpg';
            break;
   endswitch;

$img->stripImage();
$img->writeImage("testt".$ext);
$img->clear();
$img->destroy();

这在理论上应该是可行的。

第二个和第三个代码块有语法错误。您是否打开了错误报告?您的代码中充满了语法错误。我在imagick和gd代码中看到了“额外的”,但这只是因为我在这里复制时意外添加的。还有
if($imageinfo['mime']=='image/gif'{
缺少右括号。当你有gif时,为什么要从jpg创建?请发布真实代码好吧,我的错。我删除了额外的elseif,并使用了错误的函数。无论如何,重点不是这个。重点是使用最简单的函数,php页面的结果是“”(我知道这一点,因为我在我的android应用程序中看到了php页面回复的所有信息。第二个和第三个代码块有语法错误。你是否打开了错误报告?你的代码中充满了语法错误。我在imagick和gd代码中看到了一个“额外信息”,但这只是因为我在这里复制时意外添加了。还有
if($imageinfo)['mime']='image/gif'{
缺少右括号。你为什么要在有gif的情况下尝试从jpg创建?请发布真实代码好吧,我的错。我删除了额外的elseif,并使用了错误的函数。无论如何,问题不在于此。问题在于,使用最简单的函数,php页面的结果是“”(我知道这一点,因为我在我的android应用程序中看到了php页面回复的所有信息。更正双精度“如dev null所指,它不起作用。在我的android应用程序中,我没有收到任何响应,”",并且映像没有创建它。是因为我使用xampp吗?取决于您是否在该xampp上安装并启用了imagick模块-您可以在右键单击菜单a.f.a.I.r中找到它。-您在xampp的日志文件中有任何内容吗?我重新安装了它,因为我非常困惑,并且获得了最新版本的xampp。结果:windows w上的imagickphp no.我知道我需要在ext文件夹中放置一个php文件,然后修改php.ini并重新启动apache服务器,但该php文件的最新版本在哪里?它是一个模块文件,应该已经是XAMPP的一部分。GD呢?GD似乎与您的代码一起工作。我想调用imagejpeg就足够了,我不需要这样做使用临时文件,但我还没有尝试。无论如何,使用此函数是否安全,以防止攻击,如?更正双精度“由于dev null指向,它不起作用。在我的android应用程序中,我没有收到任何响应,”",并且映像没有创建它。是因为我使用xampp吗?取决于您是否在该xampp上安装并启用了imagick模块-您可以在右键单击菜单a.f.a.I.r中找到它。-您在xampp的日志文件中有任何内容吗?我重新安装了它,因为我非常困惑,并且获得了最新版本的xampp。结果:windows w上的imagickphp no.我知道我需要在ext文件夹中放置一个php文件,然后修改php.ini并重新启动apache服务器,但该php文件的最新版本在哪里?它是一个模块文件,应该已经是XAMPP的一部分。GD呢?GD似乎与您的代码一起工作。我想调用imagejpeg就足够了,我不需要这样做使用临时文件,但我还没有尝试。无论如何,使用此函数来防止类似的攻击安全吗?