创建缩略图时遇到的问题
在生成缩略图的时候,发现缩略图失真。 失真这么严重,呵呵~看看是不是设置有问题,CI 也是使用的外部图形库嘛~ ME 2.....没有解决。。。。手动用工具生了。。。
CI中把HEX转换为RGB算法有误
CI中把HEX转换为RGB算法有误,或者说,算法并不完全。(明了人一看那种字符串转换方式肯定很初级,且易出错)并且,CI的image_lib是用了三套图形库的代码,完全违背了面向对象的原则. 楼上发布一个 patch吧!期待~呵呵
色彩转换,可以提供代码
类库是没办法改了,除了写新的,色彩转换吗,可以提供代码我在另一框架中也发现了这一问题。所以,这里直接给出色彩转换函数的链接:
http://www.fleaphp.org/bbs/viewthread.php?tid=3542&extra=page%3D1 试试:将Ci_image_lib类中 hex色彩转RGB的代码部分,改为调用上面的函数,再看看结果是怎样的。注意,上面的函数名沿用了那一框架中的原函数名,引到CI中,建议改为 hex_to_rgb,这样符合CI的标准 感谢楼上的解决方案,我先贴到这里!
/**
* 将十六进制表示的颜色值转换为 rgb
*
* @param string $color
* @param string $default
*
* @return array
*/
function extractColor($color, $default = 'ffffff')
{
$color= trim($color, '#&Hh');
$len = strlen($color);
if ($len == 3) {
$color= "{$color}{$color}{$color}{$color}{$color}{$color}";
$len = 6;
}
if (($len < 6)&&($len % 2 == 1)) {
$color= $default;
}
else
{
$color .=str_repeat('0',6-$len)
}
if(! preg_match('/^{1,6}$/', $color))
$color= $default;
$dec = hexdec( $color);
return array(($dec >> 16) & 0xff, ($dec >> 8) & 0xff, $dec & 0xff);
//return array('r' => ($dec >> 16) & 0xff, 'g' => ($dec >> 8) & 0xff, 'b'=>$dec & 0xff);
} 经过我自己的测试,图像颜色失真不是 CI 的 BUG!
是使用 GD 库和 GD2 库之间的区别!使用 GD 有失真,使用 GD2没有失真。
关于颜色转换,好像只有在水印部分才有,其他地方不涉及颜色换算。 非常感谢!(不过这个有BUG的论坛还不让人少发几个字!)
页:
[1]
2