为什么我页面是黑色呢?

为什么我页面是黑色呢?

<?php

$im = imagecreatetruecolor(1000,700);  //以指定宽高创建图像资源
$back = imagecolorallocate($im,mt_rand(200,250),mt_rand(200,250),mt_rand(200,250));  //随机色
imagefill($im,0,0,$back);  //用随机色填充图像资源

$stringColor = imagecolorallocate($im,0,0,0);  //字体颜色

$str = 'abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$str = str_shuffle($str);
$rand_str = substr($str,0,4);  //随机数验证码

//在图像中水平写入字符串
//imagestring($im,5,mt_rand(20,imagesx($im)-50),mt_rand(20,imagesy($im)),$rand_str,$stringColor);

//在图像中垂直写入字符串
//imagestringup($im,100,mt_rand(20,imagesx($im)-50),mt_rand(20,imagesx($im)),$rand_str,$stringColor);


imagettftext($im,50,0,mt_rand(20,imagesx($im)-50),mt_rand(10,imagesy($im)),$stringColor,'./technic_.ttf',$rand_str);

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

http://img1.sycdn.imooc.com//climg/5cbaceb60001849714440841.jpg

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

14回答
提问者 雨之赞歌 2019-04-23 14:39:41

解决了!

必须要写绝对路径才行!!

<?php

$im = imagecreatetruecolor(1000,600);
$white = imagecolorallocate($im,255,255,255);
$str = 'AHD5';

imagettftext($im,50,0,mt_rand(20,950),mt_rand(20,550),$white,'works/gd/font/comicz.ttf',$str);
header('Content-Type:image/jpeg');
imagejpeg($im);

http://img1.sycdn.imooc.com//climg/5cbeb32a00017fa613190895.jpg

  • 提问者 雨之赞歌 #1
    补充:路径 works前面要加个 /
    2019-04-23 14:40:29
提问者 雨之赞歌 2019-04-23 11:45:21

IE浏览器
http://img1.sycdn.imooc.com//climg/5cbe8a140001c89b07550606.jpg
用 imagestring 就可以

<?php

$im = imagecreatetruecolor(1000,600);
$white = imagecolorallocate($im,255,255,255);
$str = 'AHD5';

//imagettftext($im,50,0,mt_rand(20,950),mt_rand(20,550),$white,'comicz.ttf',$str);
imagestring($im,5,500,300,$str,$white);
header('Content-Type:image/jpeg');
imagejpeg($im);

http://img1.sycdn.imooc.com//climg/5cbe8a4d0001858c07550606.jpg

  • 您好,那PHP版本是否是PHP 4, PHP 5或者 PHP 7?版本正确,依旧失败,建议同学可以不再尝试,如果之后有其它环境可以再测试一下。(代码是正确的)祝学习愉快!
    2019-04-23 13:41:48
  • 提问者 雨之赞歌 回复 好帮手慕查理 #2
    是php 7.2.1 好吧。。
    2019-04-23 13:55:34
提问者 雨之赞歌 2019-04-23 11:27:23

http://img1.sycdn.imooc.com//climg/5cbe86150001406410440173.jpg
哭了,还是不行

好帮手慕查理 2019-04-23 11:22:02

您好,运行下列代码:

<?php
$im = imagecreatetruecolor(1000,600);
$white = imagecolorallocate($im,255,255,255);
$str = 'AHD5';
imagettftext($im,50,0,mt_rand(20,950),mt_rand(20,550),$white,'comicz.ttf',$str);
header('Content-Type:image/jpeg');
imagejpeg($im);

将文件格式调整为在同一目录中:

http://img1.sycdn.imooc.com//climg/5cbe84af0001505d02600083.jpg

运行结果为:

http://img1.sycdn.imooc.com//climg/5cbe84c60001758f09980588.jpg

请按照上述格式再测试一下。

提问者 雨之赞歌 2019-04-23 09:46:31

我的是chrome,应该和老师是一样的吧,PHP版本 7.2.1
GD库信息:
http://img1.sycdn.imooc.com//climg/5cbe6e6c00012b2605670453.jpg


好帮手慕查理 2019-04-22 17:39:19

您好,index.php文件是在gd目录中的,而字体文件是和gd目录同级。路径应该是'../comicz.ttf'。

http://img1.sycdn.imooc.com//climg/5cbd8b630001d88905320305.jpg

祝学习愉快!

  • 提问者 雨之赞歌 #1
    可我代码是在demo.php中的。。
    2019-04-22 17:40:26
  • 提问者 雨之赞歌 #2
    框选错了,老师可以看上面分页
    2019-04-22 17:40:59
  • 好帮手慕查理 回复 提问者 雨之赞歌 #3
    您好,路径使用'./comicz.ttf'或者'comicz.ttf'。祝学习愉快!
    2019-04-22 17:46:23
提问者 雨之赞歌 2019-04-22 17:21:37

应该不是字体的问题,我已经设为5了。路径也没问题吧,

http://img1.sycdn.imooc.com//climg/5cbd879d000108e013650401.jpg

好帮手慕查理 2019-04-22 17:14:48

您好,测试是可以成功的。(请注意查看一下包含的字体文件的路径是否正确。)只是字体较小,不容易看到。更改imagettftext函数的第二个参数,字体会变大。

http://img1.sycdn.imooc.com//climg/5cbd85c00001ca0910850690.jpg

祝学习愉快!

提问者 雨之赞歌 2019-04-22 16:30:37
提问者 雨之赞歌 2019-04-22 16:29:58

还是黑屏。。

<?php

$im = imagecreatetruecolor(1000,600);
$white = imagecolorallocate($im,255,255,255);

$str = 'AHD5';
imagettftext($im,5,0,mt_rand(20,950),mt_rand(20,550),$white,'/comicz.ttf',$str);

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


提问者 雨之赞歌 2019-04-22 15:41:12

好像还是不行,我直接用的phpstorm里面的ttf字体文件,

http://img1.sycdn.imooc.com//climg/5cbd6ff100016a4b10100419.jpg

<?php

//print_r(gd_info());

$im = imagecreatetruecolor(1000,600);

$white = imagecolorallocate($im,255,255,255);
$str = 'AHD5';
imagettftext($im,5,0,mt_rand(20,950),mt_rand(20,550),$white,'DroidSerif-Regular.ttf',$str);

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


  • 您好,同学先不要使用其它字体,同学先使用源码中的字体,先查看一下字体的效果是否能够实现,当能够实现时,再使用其它字体,查看其它字体效果能够实现。(测试同学的代码使用源码中的字体是可以成功的,那么则证明是同学使用的字体文件存在问题,因此才让同学先测试源码中的字体是否能够用)祝学习愉快!
    2019-04-22 15:57:42
  • 提问者 雨之赞歌 回复 好帮手慕查理 #2
    源码字体是社么意思啊。。
    2019-04-22 16:04:07
  • 好帮手慕查理 回复 提问者 雨之赞歌 #3
    您好,源码字体是辅助材料中提供的课堂源码中font目录下的字体文件。祝学习愉快!
    2019-04-22 16:25:24
提问者 雨之赞歌 2019-04-22 10:07:14

可我这里显示黑屏,路径应该也没有问题。。

http://img1.sycdn.imooc.com//climg/5cbd21cc00016f2115830502.jpg

  • 您好,将字体改为源码中提供的字体,同学的字体文件应该是不可以用的,请尝试。祝学习愉快!
    2019-04-22 14:25:52
  • 提问者 雨之赞歌 回复 好帮手慕查理 #2
    源码中提供的字体。。要怎么弄啊,是设置里面给的font字体吗?
    2019-04-22 14:53:08
  • 好帮手慕查理 回复 提问者 雨之赞歌 #3
    您好,是的,是源码中font文件中的字体文件。同学将字体文件修改之后,可以设置imagestring第二个参数值,会发现效果的。祝学习愉快!
    2019-04-22 15:27:24
guly 2019-04-21 15:51:44

你好,imagestring() 用 col 颜色将字符串 s 垂直地画到 image 所代表的图像的 x, y 座标处(图像的左上角为 0, 0)。  如果 font 是 1,2,3,4 或 5,则使用内置字体。老师运行结果没有显示黑屏

http://img1.sycdn.imooc.com//climg/5cbc20e80001bb8713610710.jpg

font是内置字体设置参数,祝学习愉快!

  • 提问者 雨之赞歌 #1
    那我想要把font字体做的更大要怎么做呢? 只能使用 imagettftext 函数吗?
    2019-04-22 10:14:19
  • 好帮手慕查理 回复 提问者 雨之赞歌 #2
    您好,imagestring第二个参数值大时,字体更大。祝学习愉快!
    2019-04-22 14:30:17
  • 提问者 雨之赞歌 回复 好帮手慕查理 #3
    但是我设置只要超过5,就不生效了
    2019-04-22 14:54:01
提问者 雨之赞歌 2019-04-20 17:25:46

另外为什么 imagestring 和 imagestringup 函数 font参数,只要大于5就没效果了?

  • 提问者 雨之赞歌 #1
    这个参数是不是字体的像素大小?
    2019-04-20 17:37:31
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师