【发布时间】:2012-07-28 16:38:40
【问题描述】:
我想从 android 发送图像并将其保存在我的服务器中的 php 代码中。因为我需要保护我的服务器,所以我需要重新处理图像,所以我必须使用 GD 或 Imagick。图像以 base64 编码发送。在 php 文件中被解码,如果我使用:
$img=base64_decode($img);
$file = fopen('test.jpg', 'wb');
fwrite($file, $img);
fclose($file);
图像保存在服务器中。如果我使用 Imagick 或 GD,我的图像不会被保存并且 php 文件不会返回任何内容,即使我在它之后插入了一个回显。有什么帮助吗?在 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();
【问题讨论】:
-
第 2 和第 3 个代码块有语法错误。您是否开启了错误报告?
-
你的代码充满了语法错误。
-
我在 imagick 和 gd 代码中看到了一个“额外的内容,但这只是因为我在此处复制时意外添加了。
-
另外,
if($imageinfo['mime'] == 'image/gif'{缺少右括号。当你有 gif 时,为什么要尝试从 jpg 创建?请贴出真实代码 -
好吧,我的错。我删除了额外的 elseif 并输入了错误的函数。无论如何,重点不是那个。关键是使用最简单的函数,php页面的结果是“”(我知道,因为我在我的android应用程序中看到了php页面回复的所有信息。