[英]working with image from imagecreatefromstring PHP
所以我有一个iPhone应用程序,可以将图像上传到我的网络服务器,然后环顾四周,人们似乎在做类似的事情
$data = file_get_contents($_FILES['file']['tmp_name']);
$image = imagecreatefromstring($data);
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
我看了看php文档,但是我仍然不明白header()的作用。 它将图像转换为我想要的任何格式吗?
对于imagepng(),图像输出到哪里? 记忆? 这就是为什么我需要imagedestroy()吗?
我会放在哪里
move_uploaded_file()
提前致谢!
该代码旨在返回图像输出-您可以将其用作图像标签的有效src
。 也就是说,您可以这样做:
<img src="thatfile.php?something=1" />
标头告诉浏览器服务器将要发送的数据是图像(特别是PNG图像)。
在您的示例代码中,文件实际上从未写入任何位置:数据一直保留在内存中,直到脚本结束,然后才将其“遗忘”。 imagedestroy
释放了内存,这是一种很好的做法,但实际上不是必需的,因为在请求结束后将对内存进行垃圾回收。 如果要将图像保存在文件中,则必须使用相关的功能之一,例如imagepng
: http : imagepng
。 在示例代码中是否写入文件之间的唯一区别是缺少imagepng
第二个参数-第二个参数将是所需的文件路径。
这将有助于通读有关整个主题的文档,以使您对这些功能的工作原理以及每个功能的用途有一个全面的了解。 文档页面上有很多演示,可以演示实际操作。
这个特定的示例从$_FILES
数组中获取通过POST上传的图像,然后将其简单地输出回浏览器。 header
用于通知浏览器,其后的内容是PNG图像。
由于您是根据字符串创建图片的,因此它没有“扩展名”。 这只是图像资源 。 您可以使用imagepng
, imagejpeg
或任何其他方法从其中创建实际文件,以将图像资源保存到文件中。 您可以在此阶段自行决定扩展名 (和文件名)。
例如:
imagepng($image, 'path/to/file.png');
而我会放在哪里
move_uploaded_file()
?
由于没有上传的文件,因此您不会只有字符串。
标头纯粹是让服务器让浏览器知道“哦,嘿,这是一个png图像,请渲染它”
imagepng
将其编码为png格式并“打印”到输出
imagedestroy
释放图像资源占用的内存。
如果需要强制扩展,可以使用mod_rewrite
这是我的.htaccess
几行示例:
RewriteEngine on
RewriteRule images/000000/00FF00/newmyinfo.jpg images/newmyinfo.php?bgcolor=000000&color=00ff00 [L]
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.