Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[修改] 教你修改Discuz! x透明头像

[复制链接]
Asiaidc.net 发表于 2014-8-22 22:39:21 | 显示全部楼层 |阅读模式
本帖最后由 Asiaidc.net 于 2014-9-12 17:17 编辑

PNG图像是一种位图文件(bitmap file)存储格式,其出现的目的之一是试图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。PNG名称为 "可移植网络图形格式"(Portable Network Graphic Format)的简称.它有着许多的优点比如体积小, 无损压缩, 更优化的网络传输显示和支持透明效果等.由于诸多原因,在PNG传播过程中,很多网络浏览器经过漫长时间才开始完全支持PNG格式,如IE浏览器一直到7.0版才支持PNG格式中的半透明效果,这使得PNG格式并没有得到广泛的认知与普及。

好了,现在进入正题,谈谈如何使用透明的png格式作为我们的Discuz!头像吧.

许多用户在编辑上传png格式的头像后,如果该图片的背景是透明的话,细心的朋友会发现我们的头像变成黑色背景的了很是难看,


Why?

原来我们上传头像图片后,无论什么格式的图片,系统都会自动转换为jpg格式保存起来. .png的图片经过转换为jpg格式后自然也就失去了原来的透明背景效果.明白这个原因后我们就可以修改一些代码,让图片最后保存为png的格式.接下来要做的修改如下:
1./uc_server/avatar.php 搜索(不包含引号)" _avatar_$size.jpg" 将其修改为" _avatar_$size.png".
2./uc_server/model/base.php和上面一样,搜索" _avatar_$size.jpg" 将其修改为" _avatar_$size.png".
3./source/function/function_spacecp.php 同样搜索" _avatar_$size.jpg" 将其修改为" _avatar_$size.png".

这样修改之后,系统就会默认以png格式保存我们的头像图片了.注意:修改有风险,请务必养成及时备份的好习惯,并注意文件的编码问题.另外文中的"/"表示linux系统目录分隔符,与win中的相反.
偶可,快去测试一下修改后的效果吧!
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
PS:一直想找这方面的内容,›在Discuz!搜索了很久也没找到相关的方法,今天偶然找到一篇帖子特转了过来.原帖地址 http://bbs.asiaidc.net/forum.php?mod=viewthread&tid=62&extra= 希望能给其他需要的朋友带来帮助.第一次发主题贴,不知道发错地方没,有不对的地方还请版主多多指正!

补充说明:
以上方法只解决了将头像成功转化为.png格式,但不能保留原png图像透明的效果,可能原因是java上传头像时就已经转化为其他格式的图片了,所以,即使最后保存为.png格式,图片已经失去透明效果了.
由于测试中的疏忽给大家带来的不便表示歉意!无论何时,修改原程序的时候务请提前做好备份工作,以降低风险系数,最后还请有需要此功能的朋友共同探讨最完美的解决方法.
 楼主| Asiaidc.net 发表于 2014-8-22 22:46:09 | 显示全部楼层
发贴或回复时验证码明明提示正确, (出现小对号)为何一发表的时候就提示 抱歉,验证码填写错误
?   opera和谷歌的浏览器都这样! 幸好有自动保存功能,基本上发5,6次才能成功一个.哎,太难受了输这个!
回复

使用道具 举报

ilei365 发表于 2014-8-24 22:31:23 | 显示全部楼层
不 错 ,支 持 个
回复

使用道具 举报

 楼主| Asiaidc.net 发表于 2014-8-25 09:49:19 | 显示全部楼层
谢过前辈,今后还望多多指教!
回复

使用道具 举报

系芯べ_べ 发表于 2014-9-11 17:04:42 | 显示全部楼层
Asiaidc.net 发表于 2014-8-25 09:49
谢过前辈,今后还望多多指教!

无意中来到这个帖子,修改不但无效,反而全部会员的头像均不显示了,楼主真的有测试过吗?
回复

使用道具 举报

 楼主| Asiaidc.net 发表于 2014-9-12 16:58:41 | 显示全部楼层
系芯べ_べ 发表于 2014-9-11 17:04
无意中来到这个帖子,修改不但无效,反而全部会员的头像均不显示了,楼主真的有测试过吗?


首先对您造成的影响表示歉意,
测试肯定是测试过的并且自己也在使用,只是选的不是背景透明的png格式的图片做的头像, 刚在你的提示下重新选择了透明的图像测试,发现的却有问题.


虽然最后转换为png格式的头像保存下来了(也就大意以为可以变为透明头像了),

  1. http://bbs.asiaidc.net/uc_server/data/avatar/000/00/00/02_avatar_middle.png
复制代码

但背景还是白色,或者黑色的,问题可能出在图片刚用java上传后就已经转换为jpg或其他的格式了,也就是说刚上传就已经失去了透明属性, 再转换为png格式成功也不会有效果的.


至于你说的 "全部会员的头像均不显示了"的问题 自己没有遇到过,大概是修改过代码后只对新上传头像可用有关,以前的头像还是jpg的格式, 但已经把头像的后缀全部改成了.png了,所以无法显示.



回复

使用道具 举报

系芯べ_べ 发表于 2014-9-13 10:50:30 | 显示全部楼层
Asiaidc.net 发表于 2014-9-12 16:58
首先对您造成的影响表示歉意,
测试肯定是测试过的并且自己也在使用,只是选的不是背景透明的png格式的 ...

后面这句道理我明白,只是前面那句,貌似改png,图片任然是jpg处理的,虽然保存的是png后缀,但它根本不是透明。我感觉是那个flash处理的。
回复

使用道具 举报

 楼主| Asiaidc.net 发表于 2014-9-14 11:18:28 | 显示全部楼层
系芯べ_べ 发表于 2014-9-13 10:50
后面这句道理我明白,只是前面那句,貌似改png,图片任然是jpg处理的,虽然保存的是png后缀,但它根本不 ...

你说的很对,是javascript调取一个swf文件共同完成的.从源代码可以找到这个flash文件 .
只有保证刚上传时的图片保留原文件格式,不被flash修改,文章中的修改方法才会有效,并且只对新上传的头像有效.
目前想用透明头像的话还只能用png图片覆盖原.jpg格式的头像. 直接把xxx.png修改为xxx.jpg上传到头像目录覆盖即可使用,(这样做就不用再修改程序中头像调用的地址,否则需要将代码中的.jpg换为.png后缀)

如果对js或者flash略有所长的话可以帮忙一起解决这个问题.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

 楼主| Asiaidc.net 发表于 2014-9-14 15:31:42 | 显示全部楼层
本帖最后由 Asiaidc.net 于 2014-9-14 15:34 编辑

这是最新找到的相关资料,也是解决问题的关键部分. 无奈作为菜鸟中的最高级别的我, 按照这些文档搞了两天也没有搞定,这些只有专业级的大牛才能修改的了啊,真心希望路过的大牛们鼎力相助一把. 无论是谷歌还是百度,修改透明头像的方法基本没有,(至少我没找到)查到的都是问问题的人.以下是在百度文库中找到的资料链接.discuz头像上传程序简介
  1. http://wenku.baidu.com/link?url=h7F4TRjbhHvnle-rlZj9q-bOk1iNN63rCjPpeZw6t_X5EB5Pshkm91NTZlouz1bSRPuFguDKZ7_JG-796JewMrZbpnwpIQOK8x6rmY2Iq_3
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-18 11:50 , Processed in 0.037168 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表