如果您对织梦CMS二开php使用json讲解感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于织梦CMS二开php使用json讲解的详细内容,我们还将为您解答织梦cms二次开发
如果您对织梦CMS二开php使用json讲解感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于织梦CMS二开php使用json讲解的详细内容,我们还将为您解答织梦cms二次开发教程的相关问题,并且为您提供关于Dedecms创建栏目详细讲解 织梦CMS栏目怎么样创建教程、Linux服务器上安装织梦CMS,linux服务器织梦cms_PHP教程、php – 何时使用json和jsonp使用jquery $.ajax?、php 织梦CMS图片处理类用法的有价值信息。
本文目录一览:- 织梦CMS二开php使用json讲解(织梦cms二次开发教程)
- Dedecms创建栏目详细讲解 织梦CMS栏目怎么样创建教程
- Linux服务器上安装织梦CMS,linux服务器织梦cms_PHP教程
- php – 何时使用json和jsonp使用jquery $.ajax?
- php 织梦CMS图片处理类用法
织梦CMS二开php使用json讲解(织梦cms二次开发教程)
织梦CMS二开php使用json讲解
简 单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。
这个字符串看起来有点儿古怪(稍后会看到几个示例),但是 JavaScript 很容易解释它,而且 JSON 可以表示比名称/值对更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。
简单 JSON 示例
按照*简单的形式,可以用下面这样的 JSON 表示名称/值对:
这个示例特别基本,而且实际上比等效的纯文本名称/值对占用更多的空间:
但是,当将多个名称/值对串在一起时,JSON 就会体现出它的价值了。首先,可以创建包含多个名称/值对的记录,比如:
从语法方面来看,这与名称/值对相比并没有很大的优势,但是在这种情况下 JSON 更容易使用,而且可读性更好。例如,它明确地表示以上三个值都是同一记录的一部分;花括号使这些值有了某种联系。
值的数组
当 需要表示一组值时,JSON 不但能够提高可读性,而且可以减少复杂性。例如,假设您希望表示一个人名列表。在 XML 中,需要许多开始标记和结束标记;如果使用典型的名称/值对(就像在本系列前面新闻中看到的那种名称/值对),那么必须建立一种专有的数据格式,或者将键 名称修改为person1-firstName 这样的形式。
如果使用 JSON,就只需将多个带花括号的记录分组在一起:
这不难理解。在这个示例中,只有一个名为 people 的变量,值是包含三个条目的数组,每个条目是一个人的记录,其中包含名、姓和电子邮件地址。上面的示例演示怎么用括号将记录组合成一个值。当然,可以使用相同的语法表示多个值(每个值包含多个记录):
这里*值得注意的是,能够表示多个值,每 个值进而包含多个值。但是还需要注意,在不同的主条目(programmers、authors 和 musicians)之间,记录中实际的名称/值对可以不一样。JSON 是完全动态的,允许在 JSON 结构的中间改变表示数据的方式。
在处理 JSON 格式的数据时,没有需要遵守的预定义的约束。所以,在同样的数据结构中,可以改变表示数据的方式,甚至可以以不同方式表示同一事物。
在 JavaScript 中使用 JSON
掌握了 JSON 格式之后,在 JavaScript 中使用它就很简单了。JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。
将 JSON 数据赋值给变量
例如,可以创建一个新的 JavaScript 变量,然后将 JSON 格式的数据字符串直接赋值给它:
这特别简单;现在 people 包含前面看到的 JSON 格式的数据。但是,这还不够,因为访问数据的方式似乎还不明显。
访问数据
尽 管看起来不明显,但是上面的长字符串实际上只是一个数组;将这个数组放进 JavaScript 变量之后,就可以很轻松地访问它。实际上,只需用点号表示法来表示数组元素。所以,要想访问 programmers 列表的*个条目的姓氏,只需在 JavaScript 中使用下面这样的代码:
注意,数组索引是从零开始的。所以,这行代码首先访问 people 变量中的数据;然后移动到称为programmers 的条目,再移动到*个记录([0]);*后,访问lastName 键的值。结果是字符串值 “McLaughlin”。
下面是使用同一变量的几个示例。
利用这样的语法,可以处理任何 JSON 格式的数据,而不需要使用任何额外的 JavaScript 工具包或 API。
修改 JSON 数据
正如可以用点号和括号访问数据,也可以按照同样的方式轻松地修改数据:
在将字符串转换为 JavaScript 对象之后,就可以像这样修改变量中的数据。
转换回字符串
当然,如果不能轻松地将对象转换回本文提到的文本格式,那么所有数据修改都没有太大的价值。在 JavaScript 中这种转换也很简单:
这样就行了!现在就获得了一个可以在任何地方使用的文本字符串,例如,可以将它用作 Ajax 应用程序中的请求字符串。
更重要的是,可以将任何 JavaScript 对象转换为 JSON 文本。并非只能处理原来用 JSON 字符串赋值的变量。为了对名为 myObject 的对象进行转换,只需执行相同形式的命令:
这就是 JSON 与本系列讨论的其他数据格式之间*大的差异。如果使用 JSON,只需调用一个简单的函数,就可以获得经过格式化的数据,可以直接使用了。对于其他数据格式,需要在原始数据和格式化数据之间进行转换。即使使用 Document Object Model 这样的 API(提供了将自己的数据结构转换为文本的函数),也需要学习这个 API 并使用 API 的对象,而不是使用原生的 JavaScript 对象和语法。
#p#分页标题#e#*终结论是,如果要处理大量 JavaScript 对象,那么 JSON 几乎肯定是一个好选择,这样就可以轻松地将数据转换为可以在请求中发送给服务器端程序的格式。
JSON在PHP中的应用
互联网的今天,AJAX已经不是什么陌生的词汇了。说起AJAX,可能会立即想起因RSS而兴起的XML。XML的解析,恐怕已经不是什么难题了,非常是 PHP5,大量的XML解析器的涌现,如*轻量级的SimpleXML。不过对于AJAX来说,XML的解析更倾向于前台Javascript的支持度。 我想所有解析过XML的人,都会因树和节点而头大。不可否认,XML是很不错的数据存储方式,但是其灵活恰恰造成了其解析的困难。当然,这里所指的困难, 是相对于本文的主角--JSON而言。
JSON为何物?我就不重复概念了。通俗的说,它是一种数据的存储格式,就像PHP序列化后的字符串一样。它是一种数据描述。比如我们将一 个数组序列化后存放,就可以很容易的反序列化后应用。JSON也是如此,只不过他搭建的是客户端Javascript和服务端PHP的交互桥梁。我们用 PHP生成JSON后的字符串,然后把这个字符串传给前台Javascript,Javascirpt就可以很容易的将其反JSON然后应用。说通俗点, 它真的很像数组。
言归正传,怎么使用JSON。PHP5.2开始内置了JSON的支持。当然,如果低于这个版本的话,那么市面上有很多PHP版本的实现,随 便下一个用就OK啦。现在主要是说说PHP内置支持的JSON。很简单,两个函数:json_encode和json_decode(跟序列化很像啦)。 一个编码,一个解码。先看看编码的使用:
$arr = array(
'name' => 'Linux',
'nick' => 'php',
'contact' => array(
'邮箱' => '邮箱',
'website' => ',
)
);
$json_string = json_encode($arr);
echo $json_string;
很简单的将一个数组JSON了。需要指出的是,在非UTF-8编码下,中文字符将不可被encode,结果会出来空值,所以,如果你使用 gb2312编写PHP代码,那么就需要将包含中文的内容使用iconv或者mb转为UTF-8再进行json_encode,我都说了和序列化很像,你还不信。编码后就要解码,PHP提供了相应的函数json_decode,json_decode执行后,将会得到一个对象,操作如下:
$arr = array(
'name' => 'Linux',
'nick' => 'php',
'contact' => array(
'邮箱' => '邮箱',
'website' => ',
)
);
$json_string = json_encode($arr);
$obj = json_decode($json_string);
print_r($obj);
访问对象内的属性会吧?$obj->name,这样子的,当然,也可以把它转位数组,方便调用啦:
$json_string = json_encode($arr);
$obj = json_decode($json_string);
$arr = (array) $obj;
print_r($arr);
PHP转来转去的用途不是非常大,除了缓存生成,感觉还不如直接存数组呢,不过,当你和前台交互的时候,它的作用就出来咯,下面看看我如何用Javascript来使用这段字符。
上面中,直接将这个字符串赋给一个变量,它就变成一个Javascript数组了(专业化术语需要不叫数组,不过由于PHP的习惯问题,我就 一直叫数组好了,方便理解)。这样,可以很方便的对arr进行遍历或者任意做你想做的事情了。写到这里,好像都没提到AJAX哦?是哦,联想一下,如果服 务端返回的responseText用JSON过的字符串代替XML的话,前台Javascript处理起来是不是很方便呢?狗皮膏药就是这样用的。
其实写到这里,除了数据的存储格式不太一样外,JSON和XML也没什么太大区别哦,不过下面我说的一点。虽然和XML没多大关系,不过, 可以说明JSON更大范围的应用,那就是,跨域的数据调用。由于安全性问题,AJAX不支持跨域调用,这样要调用不同域名下的数据,很麻烦哦,虽然有解决 方法(stone在他的讲座上提到过了代理啊什么的虽然听不懂但是知道能解决)。我写两个文件,足以展示跨域调用了。
主调文件index.html
被调文件profile.php
$arr = array(
'name' => 'Linux',
'nick' => 'php',
'contact' => array(
'邮箱' => '邮箱',
'website' => ',
)
);
$json_string = json_encode($arr);
echo "getProfile($json_string)";
?>
#p#分页标题#e#很显然,当index.html调用profile.php时,JSON字符串生成,并作为参数传入getProfile,然后将昵称插入到div中,这样一次跨域数据交互就完成了,是不是非常简单。既然JSON这么简单易用而且好用,还等什么呢?^_^
本文章网址:http://www.ppssdd.com/code/22156.html。转载请保留出处,谢谢合作!Dedecms创建栏目详细讲解 织梦CMS栏目怎么样创建教程
在我们进入栏目管理之后我们会看到栏目管理菜单的顶部右上方会有如下图显示
点击【增加顶级栏目】后会看到如下图所示的一个表单,其他的三个按钮这里就不多做解释了,自己研究一下吧。
栏目内容,这是一个html网页内容编辑器,在里面可以写下对这个栏目的说明简介,可以像文档一样,支持HTML代码。如果是封面页比如说联系我们,公司简介,使用这样的就只有一个单页而不能发布文章的(也就是在这里增加内容)。
Linux服务器上安装织梦CMS,linux服务器织梦cms_PHP教程
linux服务器上安装织梦cms,linux服务器织梦cms
安装篇
第一步:配置防火墙(默认情况下,端口80和3306是拒绝访问的,在防火墙上进行配置):
- vi /etc/sysconfig/iptables(在"COMMIT"的上一行加上如下两句)
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT(允许80端口通过防火墙)
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT(允许3306端口通过防火墙)
接着重启防火墙使得配置生效:
- /etc/init.d/iptables restart
第二步:安装Apache
立即学习“PHP免费学习笔记(深入)”;
使用以下命令安装Apache:
- yum install httpd
如果出下下面所示的语句,说明已经安装了Apache了,不需要重新安装:
立即学习“PHP免费学习笔记(深入)”;
安装完之后,重新启动Apache:/etc/init.d/httpd restart
接着将Apache设置为开机启动:chkconfig httpd on.(这一步使得服务器不需要在每次重启的时候都要手动启动httpd服务)
要查看httpd服务的启动状态,可以使用命令:chkconfig --list httpd(会显示httpd在各个级别(level)下的启动状态)
第三步:安装MySQL
1、使用以下命令安装MySQL:
- yum install mysql mysql-server
同样,如果出现提示已安装的话,就说明系统安装了MySQL了,可以跳过这一步,否则,系统接下来会自动安装MySQL。
立即学习“PHP免费学习笔记(深入)”;
安装完成了之后,启动MySQL:/etc/init.d/mysql start
将MySQL设置为开机启动:chkconfig mysqld on
最后,拷贝配置文件:cp /usr/share/mysql/my-medium.cnf /etc/my.cnf (在/etc下有个my.cnf文件,直接覆盖就行了)
2、用以下命令给root账户设置密码
- mysql_secure_installation
根据提示输入2次密码,就设置成功了。注意,在设置过程中,会提示删除是否anonymous用户,是否拒绝root的远程访问,是否删除测试用的数据库等,这些都需要根据自己的实际情况进行选择。最后出现:Thanks for using MySQL!,设置密码成功了。
立即学习“PHP免费学习笔记(深入)”;
重新启动MySQL:/etc/init.d/mysqld restart
第四步:安装PHP
1、使用以下命令安装PHP:
- yum install php
立即学习“PHP免费学习笔记(深入)”;
根据提示往下安装就行了。安装完之后重新启动Apache:/etc/init.d/httpd restart
2、安装PHP组件,是PHP支持MySQL
可以使用命令:yum search php来查看PHP的组件,选择需要的模块进行安装:
yum install php-mysql php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt
安装完之后,重启Apache:/etc/init.d/httpd restart
重启MySQL:/etc/init.d/mysqld restart
立即学习“PHP免费学习笔记(深入)”;
到了这一步,LAMP中的AMP都已经安装完毕了,但是web服务器此时并不能被访问,因为要访问服务器,还需要对Apache和PHP进行相应的配置。
配置篇
第一步:配置Apache
修改Apache配置文件:vi /etc/httpd/conf/httpd.conf,并在文件中查找下面所在行,进行修改(查找可以在vi的一般模式下输入“/要查找的字符”进行查找):
ServerTokens OS 修改为: ServerTokens Prod (在出现错误页的时候不显示服务器操作系统的名称)
ServerSignature On 修改为: ServerSignature Off (在错误页中不显示Apache的版本)
Options Indexes FollowSymLinks 修改为: Options Includes ExecCGI FollowSymLinks (允许服务器执行CGI及SSI,禁止列出目录)
#AddHandler cgi-script .cgi 修改为: AddHandler cgi-script .cgi .pl (允许扩展名为.pl的CGI脚本运行)
AllowOverride None 修改为: AllowOverride All (允许.htaccess)
AddDefaultCharset UTF-8 修改为: AddDefaultCharset GB2312 (添加GB2312为默认编码)
Options Indexes MultiViews FollowSymLinks 修改为 Options MultiViews FollowSymLinks (不在浏览器上显示树状目录结构)
DirectoryIndex index.html index.html.var 修改为: DirectoryIndex index.html index.htm Default.html Default.htm index.php Default.php index.html.var (设置默认首页文件,增加index.php)
KeepAlive Off 修改为: KeepAlive On (允许程序性联机)
MaxKeepAliveRequests 100 修改为: MaxKeepAliveRequests 1000 (增加同时连接数)
立即学习“PHP免费学习笔记(深入)”;
修改好之后保存配置,重新启动Apache:/etc/init.d/httpd restart
建议删除默认的测试页面:rm -f /etc/httpd/conf.d/welcome.conf /var/www/error/noindex.html
第二步:配置PHP
修改PHP配置文件:vi /etc/php.ini,以下需要修改的行的位置可以通过vi的查找命令来查找:
date.timezone = PRC #把前面的分号去掉,改为date.timezone = PRC
disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru, stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname
#列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。
expose_php = Off #禁止显示php版本的信息
display_errors = OFF #关闭错误提示
register_globals = OFF #关闭注册全局变量
magic_quotes_gpc = On #打开magic_quotes_gpc来防止SQL注入
log_errors = On #记录错误日志
error_log = /var/log/php/error_log.log #设置错误日志存放目录,文件必须允许apache用户的和组具有写的权限(注意,在修改之前,要先创建文件/var/log/php/error_log.log,然后在修改其属性,使其属于apache用户和用户组。chown apache /var/log/php/error_log.log和chgrp apache /var/log/php/error_log.log)
open_basedir = .:/tmp/ #设置表示允许访问当前目录(即PHP脚本文件所在之目录)和/tmp/目录,可以防止php木马跨站
立即学习“PHP免费学习笔记(深入)”;
经过安装和配置之后,web服务器基本上已经搭建起来了,可以对其进行访问。
立即学习“PHP免费学习笔记(深入)”;
测试篇
在目录/var/www/html下:cd /var/www/html
创建php文件:vi index.php
phpinfo();
?>
那么,在浏览器中输入本机地址的时候,就可以访问到刚才创建的index.php网页文件了。
注意:apache的默认程序目录是:/var/www/html,网页文件放在这里就可以被访问到。需要保证这个目录是属于用户apache和用户组apache的。
MySQL的数据库目录是:/var/lib/mysql
立即学习“PHP免费学习笔记(深入)”;
写到这里,LAMP就安装配置完毕了,浏览器只要输入服务器的IP地址或者是域名的话,就能够访问到服务器上的网页文件了。
有错漏的地方,欢迎大家随时指出修改意见,谢谢大家的支持。
Linux系统中常用的命令:
立即学习“PHP免费学习笔记(深入)”;
一、Linux常用命令
1.1.权限分配chmod命令
chmod 777 dir/file
1.2.参考链接
1.http://blog.sina.com.cn/s/blog_3fe048830100gp0e.html
二、对mysql数据库常用操作命令
2.1.修改MySQL字符集
1.修改my.cnf
vi /etc/my.cnf
在[client]下添加
default-character-set=utf8
在[mysqld]下添加
default-character-set=utf8
2.重新启动MySQL
service mysqld restart
3.查看字符集设置
show variables like ''character_set_%'';
2.2.其他的一些设置方法
1.修改数据库的字符集
mysql>use mydb
mysql>alter database mydb character set utf-8;
2.创建数据库指定数据库的字符集
mysql>create database mydb character set utf-8;
3.通过MySQL命令行修改
set character_set_client=utf8;
set character_set_connection=utf8;
set character_set_database=utf8;
set character_set_results=utf8;
set character_set_server=utf8;
set character_set_system=utf8;
set collation_connection=utf8;
set collation_database=utf8;
set collation_server=utf8;
2.3.备份还原数据库
1.备份
mysqldump -u root -p voice>voice.sql;
2.还原
source voice.sql;
mysql -u root -p voice
1.http://blog.chinaunix.net/uid-26727991-id-4742248.html
立即学习“PHP免费学习笔记(深入)”;
参考链接:http://www.linuxidc.com/Linux/2012-06/63847.htm
php – 何时使用json和jsonp使用jquery $.ajax?
在我们的网站中,有些页面是SSL,有些是非SSL.
例如:
http://www.example.com/search/patients
https://www.example.com/patients
现在我在http://www.example.com/search/patients页面上搜索病人,并通过jQuery $.ajax函数和dataType = json将服务器请求发送到https://www.example.com/patients.我无法获取数据.
问题:
>当我们从http请求https或https到同一服务器上的http时,我应该使用jsonp吗?
>如果我对两个URL都使用SSL,那么它只适用于dataType = json
谢谢
解决方法:
由于Same Origin Policy,只有在以下情况下才允许您的ajax请求:
域名,应用层协议和(在大多数浏览器中)端口
运行脚本的HTML文档的编号是相同的
在您的情况下,应用程序层协议是不同的,这就是您的脚本失败的原因.
可能的解决方案是
> JSONP,必须由服务器提供
> CORS,这是一个更“优雅”和干净的解决方案,但尚未完全支持IE(IE7不支持它,IE8有一些限制)
php 织梦CMS图片处理类用法
PHP织梦CMS图片处理类,感兴趣的小伙伴,下面一起跟随小编 jb51.cc的小编来看看吧。经测试代码如下:
<?PHP
if(!defined('DEDEINC')) exit('Dedecms');
/**
* 图像处理类
*
* @param
* @author 小编 jb51.cc jb51.cc
**/
class image
{
var $attachinfo;
var $targetfile; //图片路径
var $imagecreatefromfunc;
var $imagefunc;
var $attach;
var $animatedgif;
var $watermarkquality;
var $watermarktext;
var $thumbstatus;
var $watermarkstatus;
// 析构函数,兼容PHP4
function image($targetfile,$cfg_thumb,$cfg_watermarktext,$photo_waterpos,$photo_diaphaneity,$photo_wheight,$photo_wwidth,$cfg_watermarktype,$photo_marktrans,$trueMarkimg,$attach = array())
{
$this->__construct($targetfile,$attach);
}
// 析构函数
function __construct($targetfile,$attach = array())
{
$this->thumbstatus = $cfg_thumb;
$this->watermarktext = $cfg_watermarktext;
$this->watermarkstatus = $photo_waterpos;
$this->watermarkquality = $photo_marktrans;
$this->watermarkminwidth = $photo_wwidth;
$this->watermarkminheight = $photo_wheight;
$this->watermarktype = $cfg_watermarktype;
$this->watermarktrans = $photo_diaphaneity;
$this->animatedgif = 0;
$this->targetfile = $targetfile;
$this->attachinfo = @getimagesize($targetfile);
$this->attach = $attach;
switch($this->attachinfo['mime'])
{
case 'image/jpeg':
$this->imagecreatefromfunc = function_exists('imagecreatefromjpeg') ? 'imagecreatefromjpeg' : '';
$this->imagefunc = function_exists('imagejpeg') ? 'imagejpeg' : '';
break;
case 'image/gif':
$this->imagecreatefromfunc = function_exists('imagecreatefromgif') ? 'imagecreatefromgif' : '';
$this->imagefunc = function_exists('imagegif') ? 'imagegif' : '';
break;
case 'image/png':
$this->imagecreatefromfunc = function_exists('imagecreatefrompng') ? 'imagecreatefrompng' : '';
$this->imagefunc = function_exists('imagepng') ? 'imagepng' : '';
break;
}//为空则匹配类型的函数不存在
$this->attach['size'] = empty($this->attach['size']) ? @filesize($targetfile) : $this->attach['size'];
if($this->attachinfo['mime'] == 'image/gif')
{
$fp = fopen($targetfile,'rb');
$targetfilecontent = fread($fp,$this->attach['size']);
fclose($fp);
$this->animatedgif = strpos($targetfilecontent,'netscape2.0') === false ? 0 : 1;
}
}
/**
* 生成缩略图
*
* @access public
* @param int $thumbwidth 图片宽度
* @param int $thumbheight 图片高度
* @param int $preview 是否预览
* @return void
*/
function thumb($thumbwidth,$thumbheight,$preview = 0)
{
$this->thumb_gd($thumbwidth,$preview);
if($this->thumbstatus == 2 && $this->watermarkstatus)
{
$this->image($this->targetfile,$this->attach);
$this->attach['size'] = filesize($this->targetfile);
}
}
/**
* 图片水印
*
* @access public
* @param int $preview 是否预览
* @return void
*/
function watermark($preview = 0)
{
if($this->watermarkminwidth && $this->attachinfo[0] <= $this->watermarkminwidth && $this->watermarkminheight && $this->attachinfo[1] <= $this->watermarkminheight)
{
return ;
}
$this->watermark_gd($preview);
}
/**
* 使用gd生成缩略图
*
* @access public
* @param int $thumbwidth 图片宽度
* @param int $thumbheight 图片高度
* @param int $preview 是否预览
* @return void
*/
function thumb_gd($thumbwidth,$preview = 0)
{
if($this->thumbstatus && function_exists('imagecreatetruecolor') && function_exists('imagecopyresampled') && function_exists('imagejpeg'))
{
$imagecreatefromfunc = $this->imagecreatefromfunc;
$imagefunc = $this->thumbstatus == 1 ? 'imagejpeg' : $this->imagefunc;
list($imagewidth,$imageheight) = $this->attachinfo;
if(!$this->animatedgif && ($imagewidth >= $thumbwidth || $imageheight >= $thumbheight))
{
$attach_photo = $imagecreatefromfunc($this->targetfile);
$x_ratio = $thumbwidth / $imagewidth;
$y_ratio = $thumbheight / $imageheight;
if(($x_ratio * $imageheight) < $thumbheight)
{
$thumb['height'] = ceil($x_ratio * $imageheight);
$thumb['width'] = $thumbwidth;
}
else
{
$thumb['width'] = ceil($y_ratio * $imagewidth);
$thumb['height'] = $thumbheight;
}
$targetfile = !$preview ? ($this->thumbstatus == 1 ? $this->targetfile.'.thumb.jpg' : $this->targetfile) : './watermark_tmp.jpg';
$thumb_photo = imagecreatetruecolor($thumb['width'],$thumb['height']);
imagecopyresampled($thumb_photo,$attach_photo,$thumb['width'],$thumb['height'],$imagewidth,$imageheight);
if($this->attachinfo['mime'] == 'image/jpeg')
{
$imagefunc($thumb_photo,$targetfile,100);
}
else
{
$imagefunc($thumb_photo,$targetfile);
}
$this->attach['thumb'] = $this->thumbstatus == 1 ? 1 : 0;
}
}
}
/**
* 使用gd进行水印
*
* @access public
* @param int $preview 是否预览
* @return void
*/
function watermark_gd($preview = 0)
{
if($this->watermarkstatus && function_exists('imagecopy') && function_exists('imagealphablending') && function_exists('imagecopymerge'))
{
$imagecreatefunc = $this->imagecreatefromfunc;
$imagefunc = $this->imagefunc;
list($imagewidth,$imageheight) = $this->attachinfo;
if($this->watermarktype < 2)
{
$watermark_file = $this->watermarktype == 1 ? DEDEDATA.'/mark/mark.png' : DEDEDATA.'/mark/mark.gif';
$watermarkinfo = @getimagesize($watermark_file);
$watermark_logo = $this->watermarktype == 1 ? @imagecreatefrompng($watermark_file) : @imagecreatefromgif($watermark_file);
if(!$watermark_logo)
{
return ;
}
list($logowidth,$logoheight) = $watermarkinfo;
}
else
{
$Box = @imagettfbBox($this->watermarktext['size'],$this->watermarktext['angle'],$this->watermarktext['fontpath'],$this->watermarktext['text']);
$logowidth = max($Box[2],$Box[4]) - min($Box[0],$Box[6]);
$logoheight = max($Box[1],$Box[3]) - min($Box[5],$Box[7]);
$ax = min($Box[0],$Box[6]) * -1;
$ay = min($Box[5],$Box[7]) * -1;
}
$wmwidth = $imagewidth - $logowidth;
$wmheight = $imageheight - $logoheight;
if(($this->watermarktype < 2 && is_readable($watermark_file) || $this->watermarktype == 2) && $wmwidth > 10 && $wmheight > 10 && !$this->animatedgif)
{
switch($this->watermarkstatus)
{
case 1:
$x = +5;
$y = +5;
break;
case 2:
$x = ($imagewidth - $logowidth) / 2;
$y = +5;
break;
case 3:
$x = $imagewidth - $logowidth - 5;
$y = +5;
break;
case 4:
$x = +5;
$y = ($imageheight - $logoheight) / 2;
break;
case 5:
$x = ($imagewidth - $logowidth) / 2;
$y = ($imageheight - $logoheight) / 2;
break;
case 6:
$x = $imagewidth - $logowidth - 5;
$y = ($imageheight - $logoheight) / 2;
break;
case 7:
$x = +5;
$y = $imageheight - $logoheight - 5;
break;
case 8:
$x = ($imagewidth - $logowidth) / 2;
$y = $imageheight - $logoheight - 5;
break;
case 9:
$x = $imagewidth - $logowidth - 5;
$y = $imageheight - $logoheight -5;
break;
}
$dst_photo = @imagecreatetruecolor($imagewidth,$imageheight);
$target_photo = $imagecreatefunc($this->targetfile);
imagecopy($dst_photo,$target_photo,$imageheight);
if($this->watermarktype == 1)
{
imagecopy($dst_photo,$watermark_logo,$x,$y,$logowidth,$logoheight);
}
elseif($this->watermarktype == 2)
{
if(($this->watermarktext['shadowx'] || $this->watermarktext['shadowy']) && $this->watermarktext['shadowcolor'])
{
$shadowcolorrgb = explode(',',$this->watermarktext['shadowcolor']);
$shadowcolor = imagecolorallocate($dst_photo,$shadowcolorrgb[0],$shadowcolorrgb[1],$shadowcolorrgb[2]);
imagettftext($dst_photo,$this->watermarktext['size'],$x + $ax + $this->watermarktext['shadowx'],$y + $ay + $this->watermarktext['shadowy'],$shadowcolor,$this->watermarktext['text']);
}
$colorrgb = explode(',$this->watermarktext['color']);
$color = imagecolorallocate($dst_photo,$colorrgb[0],$colorrgb[1],$colorrgb[2]);
imagettftext($dst_photo,$x + $ax,$y + $ay,$color,$this->watermarktext['text']);
}
else
{
imagealphablending($watermark_logo,true);
imagecopymerge($dst_photo,$logoheight,$this->watermarktrans);
}
$targetfile = !$preview ? $this->targetfile : './watermark_tmp.jpg';
if($this->attachinfo['mime'] == 'image/jpeg')
{
$imagefunc($dst_photo,$this->watermarkquality);
}
else
{
$imagefunc($dst_photo,$targetfile);
}
$this->attach['size'] = filesize($this->targetfile);
}
}
}
}//End Class
/*** 代码来自小编 jb51.cc(jb51.cc) ***/
关于织梦CMS二开php使用json讲解和织梦cms二次开发教程的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于Dedecms创建栏目详细讲解 织梦CMS栏目怎么样创建教程、Linux服务器上安装织梦CMS,linux服务器织梦cms_PHP教程、php – 何时使用json和jsonp使用jquery $.ajax?、php 织梦CMS图片处理类用法的相关知识,请在本站寻找。
本文标签: