Php GD/Imagick不';我不能保存我的图像
我想从android发送一个图像,并将其保存到我的服务器中的php代码中。因为我需要保护我的服务器,我需要重新处理映像,所以我必须使用GD或Imagick。图像以base64编码发送。在php文件中进行解码,如果我使用: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文件也不
$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就足够了,我不需要这样做使用临时文件,但我还没有尝试。无论如何,使用此函数来防止类似的攻击安全吗?