PHP进一步处理ImagePNG()的结果而不保存到磁盘?

时间:2010-09-12 01:22:20

标签: php

有没有办法处理创建的图像(使用GD库中的ImagePNG())在内存中可以说而无需将临时文件保存到磁盘?我想要实现的基本上是POST创建的图像,并且如果可能的话,我希望避免任何创建临时文件的需要。 PHP只会从服务器输出该POST的响应。

由于

2 个答案:

答案 0 :(得分:1)

那么你需要curl

来自文档: PHP支持libcurl,这是一个由Daniel Stenberg创建的库,它允许您使用许多不同类型的协议连接和通信许多不同类型的服务器。 libcurl目前支持http,https,ftp,gopher,telnet,dict,file和ldap协议。 libcurl还支持HTTPS证书,HTTP POST,HTTP PUT,FTP上传(这也可以通过PHP的ftp扩展),基于HTTP表单的上传,代理,cookie和用户+密码验证。

要在内存中捕获图像并在尝试输出缓冲后使用curl发送它:

    <?php
ob_start();
header('Content-type: image/jpeg');
ImageJpg(...);
$myImage = ob_get_contents();
ob_clean ();

?>

那样的东西?

答案 1 :(得分:1)

我尝试了输出缓冲但两小时后放弃了。这对我有用:

首先创建一个临时文件,然后将其传递给ImagePNG()。之后只需使用文件读取例程来读取文件内容并将结果存储在变量中并删除创建的临时文件(unlink($ tmp);)

$tmpfile = tempnam("/tmpdir", "img");
//your name will not clash with another request

imagepng($my_img,$tmpfile);
$handle = fopen($tmpfile, "rb");
$img_file_contents = fread($handle, filesize($tmpfile));
fclose($handle);
unlink($tmpfile); //no accumulation of image files
//now send the $img_file_contents via cURL