我写了一个采集程序 采集网上的图片 采集回来的是一堆乱码字符
header("Content-type:image/jpeg;charset=utf-8");之后能显示正常图片
现在我想给图片加上水印
我是把采集的图片直接保存到目录上  然后再加载按下面方式处理
$fp = @imagecreatefromjpeg(图片路径);
$wp = @imagecreatefrompng(水印路径);
$res = imagecopy($fp,$wp,0,0, 0, 0,120,180);
imagejpeg($fp);
现在我想不保存到目录 直接加上水印在页面上显示该如何处理 请大家指教一下 谢谢

解决方案 »

  1.   

    不太明白,你的数据总得有个地方保存呀?
    php的imagecreatefromjpeg()函数支持rfc2397标准,你可以用 
    $mime = '图片mime类型,如 image/png, image/jpeg';
    $base64_content = base64_encode('图片内容');
    $uri = "data:{$mime};base64,{$base64_content}";
    $fp = @imagecreatefromjpeg($uri);
    或者你也可以把图片存到临时文件夹,这样会更方便。
      

  2.   

    程序放在SAE和BAE上
    保存图片得丢进storage 相对来说麻烦
    而且我不太希望保存图片
    所以来请教下能不能直接加水印输出,而不用保存
      

  3.   

    不是有 imagecreatefromstring 吗?$fp = imagecreatefromstring(file_get_contents('http://avatar.profile.csdn.net/9/D/6/1_dream1206.jpg'));
    $wp = imagecreatefromstring(file_get_contents('http://avatar.profile.csdn.net/1/5/6/1_gilper.jpg'));
    imagecopymerge($fp,$wp,0,0, 0, 0,120,180, 50);
    imagepng($fp);
      

  4.   

    以前研究过用imagemagick加水印,功能比较强大。楼主可以看看
      

  5.   


    非常感谢,已经搞定,之前没发现还有这个函数。
    先补问一个问题,用
    header("Content-Type:image/jpeg");
    imagejpeg($fp);
    这样的方式已经把文件声明成图片了,不能直接和原有的HTML在一起,该如何直接echo出这张图片在HTML中某个位置?
    单独再写个网页用img标签加载进来我知道 但是这时候不太适合用这个,请教一下其他方法,谢谢。
      

  6.   

    不用 img 也可以用 iframe 另外还可以用 css 作为背景