【问题标题】:Blank image imagecreatefromjpeg空白图像 imagecreatefromjpeg
【发布时间】:2015-10-15 22:57:31
【问题描述】:

我有以下功能

function getImage($imageHash,$script) {



        $imageurl = "http://www.MYURL.com/images/images/ABImage_clock_4.jpg";
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $imageurl);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
        curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); 
        $data = curl_exec($ch);
        curl_close($ch);

        $img = imagecreatefromjpeg($data);

        // draw lines

        $num_lines = rand(6,10);


            for ($i = 0; $i <= $num_lines; $i++)
            {
        $color = imagecolorallocate($img, rand(0,255), rand(0,255), rand(0,255));

        imageline($img, rand(5,95), rand(5,95), rand(5,95), rand(5,95), $color);
    }

    imagefilter($img, IMG_FILTER_COLORIZE, rand(1, 50), rand(1, 50), rand(1, 50));

    imagejpeg($img, '', 30);
    imagedestroy($img);

    }

但似乎无法创建图像。图像位于根文件夹中,您可以看到 images/images 文件夹。但是没有任何东西可以使图像看起来应该是可见的。

我该如何解决这个问题?

更新:

来自$data 的转储

更新2:

线: 42:`

$img = imagecreatefromjpeg($data);

51:

$color = imagecolorallocate($img, rand(0,255), rand(0,255),` rand(0,255));

和 58 和 59:`

    imagejpeg($img, '', 30);
imagedestroy($img);

【问题讨论】:

    标签: php image image-processing


    【解决方案1】:

    [这不是一个答案,但我不能在评论部分写这个。]

    我认为不看你怎么称呼这段代码是不可能回答的。

    一些想法:

    1) 首先将 $data 转储到某个地方(您的浏览器、文件等),看看您的 curl 调用是否按预期工作。

    2) (imagejpeg($img, '', 30);) 中的第二个参数是空字符串?这应该包含您要保护图像的位置的路径。还有名字。

    (海报希望直接输出到浏览器)

    编辑:

    好的,通过 curl 获取数据。很好。

    现在你直接输出到浏览器吧?

    在这种情况下,请确保您使用正确的 mime 类型。

    所以,从您的 HTML 中:

    <img src="http://www.yoursite.com/myImageGenerator.php">
    

    并确保您将正确的标题添加到您的 php 脚本中。

    header('Content-Type: image/jpeg');
    

    还要确保不输出任何其他内容。

    ====================

    下一次编辑(因为那些 cmets 太小了)

    情况:您现在有一张图片,表明您缺少一张图片。

    当然,这根本没有帮助。 ;-)

    您是否检查过脚本抛出的任何错误?调试图像创建脚本可能很困难,因为在屏幕上看不到错误。

    您可以通过两种方式做到这一点:

    1) 检查错误日志。使用 phpinfo() http://php.net/manual/en/function.phpinfo.php 并查找错误日志的位置,并查看它。

    2) 我更喜欢这个:直接在浏览器中调用您的图像创建脚本。确保在 PHP 中改回 mimetype。现在您可以看到浏览器在尝试获取图像时收到的输出以及任何错误。

    =================================

    给你,一个基于海绵宝宝的工作示例。 (我对使用过的图片没有权利。希望我有。)

    我希望你可以用它来修改你自己的。请务必在 www.php.net 上查找您不知道的功能。

    <?php
        // call this script with test.php?produceimage=Y to return only image
        $bPictMode = isset($_GET["produceimage"]);
    
        $imageurl = "http://vignette4.wikia.nocookie.net/unanything/images/6/6a/Spongebob.jpg";
    
        if ($bPictMode){
    
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $imageurl);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
            curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); 
            $data = curl_exec($ch);
            curl_close($ch);
    
            $img = imagecreatefromstring ($data);
    
            // draw lines
            $num_lines = rand(6,10);
            for ($i = 0; $i <= $num_lines; $i++){
                $color = imagecolorallocate($img, rand(0,255), rand(0,255), rand(0,255));
                imageline($img, rand(5,95), rand(5,95), rand(5,95), rand(5,95), $color);
            }
            imagefilter($img, IMG_FILTER_COLORIZE, rand(1, 50), rand(1, 50), rand(1, 50));
    
            imagejpeg($img, NULL, 30);
            imagedestroy($img);
        } else {
            $imgURL = "test.php?produceimage=Y";
    ?>
    <!DOCTYPE html>
    <html>
     <head>
      <title>jpg generator</title>
     </head>
     <body>
      Do you see him? (image-url = <?php echo $imgURL; ?>)<br>
      <img src="./<?php echo $imgURL; ?>" style="border: 3px solid blue;">
      <hr>  
     </body>
    </html>
    <?php   
        }
    ?>
    

    【讨论】:

    • 会的。 prntscr.com/8r7ig8 在那里工作。目的是在图像上画线。
    • 好的,这是第 1 部分:您确实会从 curl 调用中得到响应。目前很好。我将在我的帖子中对其余部分进行编辑。
    • 已更新。是的。我有一些错误。更新了主帖。
    • 好吧,去修理它们!我不能从这里帮忙。
    • 我发布了一个完整的例子。我帖子中的最后一件事。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 2015-10-28
    相关资源
    最近更新 更多