PHP图像处理,imagefill 疑问?
代码如下:
<?php
$im = imagecreatetruecolor ( 100, 100 ); // 创建100*100大小的画布
$red = imagecolorallocate ( $im, 255, 0, 0 ); // 设置一个颜色变量为红色
imagefill ( $im, 50, 50, $red ); // 将背景设为红色
//imagefill ( $im, 0, 0, $red ); // 将背景设为红色
header ( 'Content-type: image/png' ); // 通知浏览器这不是文本而是一个图片
imagepng ( $im ); // 生成PNG格式的图片输出给浏览器
imagedestroy ( $im ); //销毁图像资源,释放画布占用的内存空间
问题:为什么 imagefill ( $im, 50, 50, $red );
和 imagefill ( $im, 0, 0, $red );
都是从 0,0 开始,50,50 不起作用?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这个很好理解,你看下画图程序里面的染色桶,
只要是一块画布,他是不是可以在某个区域任意一点对画布上该区域进行色彩填充
这个imagefill 和你那个差不多,都是任意一点“点一下”就会对整个区域进行色彩填充,所以点击50,50和0,0效果一样
你要想从50,50开始填充,应当再建立一块画布,上色,然后从50,50开始复制到原画布上,imagecopymerge
这个是你没有详细阅读定义
这里写了imagefill填充是从image图像的左上角0,0开始用颜色把与x,y颜色相同相邻的点全部填充。回到这个问题,你的$im应该是个白色的,左上角0,0与x(50),y(50)的颜色是相同的 所以会从左上角开始充满,然后相邻的都是同色,所以结果就是全部变成了红色
谢谢回答,译意我明白了,但实际操作时会出现 BUG,不知道是浏览器兼容问题还是 PHP版本问题!
AA.JPG
每个色块大小是 50px*50px
<?php
$im = imagecreatefromjpeg("AA.jpg");
$blue = imagecolorallocate ( $im, 0, 0, 255 ); // 设置一个颜色变量为红色
imagefill ( $im, 30, 80, $blue ); // 将背景设为红色
//imagefill ( $im, 0, 0, $blue ); // 将背景设为红色
header ( 'Content-type: image/jpg' ); // 通知浏览器这不是文本而是一个图片
imagepng( $im ); // 生成PNG格式的图片输出给浏览器
imagedestroy ( $im ); //销毁图像资源,释放画布占用的内存空间
?>
输出图片是这样的