我想从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();
答案 0 :(得分:1)
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();
理论上,这应该有效。