我有以下功能
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文件夹。但没有任何东西可以使图像显而易见。
我该如何解决这个问题?
更新:
UPDATE2:
行: 42:`
$img = imagecreatefromjpeg($data);
51:
$color = imagecolorallocate($img, rand(0,255), rand(0,255),` rand(0,255));
和58&amp; 59:`
imagejpeg($img, '', 30);
imagedestroy($img);
答案 0 :(得分:0)
[这不是答案,但我不能在评论部分写这个。]
我认为如果不知道如何调用此代码,就无法回答。
一些想法:
1)首先在某处(您的浏览器,文件,等等)转储$ data,以查看您的curl调用是否按预期工作。
2)(imagejpeg($ img,&#39;&#39;,30);)中的第二个参数是一个空字符串?这应该包含您要保护图像的位置的路径。还有名字。
(海报希望它直接输出到浏览器)
编辑:
好的,数据是通过curl获取的。好。
现在直接将其输出到浏览器,对吗?
在这种情况下,请确保使用正确的mime类型。
所以,从您的HTML:
<img src="http://www.yoursite.com/myImageGenerator.php">
并确保在php脚本中添加正确的标题。
header('Content-Type: image/jpeg');
另外请确保您不输出任何其他内容。
===================
下一次编辑(因为这些评论太小)
情况:您现在有一张图片显示您的图片缺失。
当然,这根本没有帮助。 ;-)您是否检查过脚本引发的任何错误?调试图像创建脚本可能很困难,因为无法在屏幕上看到错误。
您可以通过两种方式执行此操作:
1)检查错误日志。使用phpinfo()http://php.net/manual/en/function.phpinfo.php并查找错误日志的位置,并查看它。
2)我更喜欢这个:只需在浏览器中直接调用您的图像创建脚本即可。确保在PHP中更改mimetype。现在,您可以看到浏览器在尝试获取图像和任何错误时收到的输出。
================================
在这里,您将看到一个基于Spongebob的工作示例。 (我对使用过的图片没有权利。希望我这样做。)
我希望你可以用它来修改你自己的。请务必在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
}
?>