仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 799|回复: 7
打印 上一主题 下一主题

[学习教程] MYSQL编程:图片裁剪+缩略图的处置程序

[复制链接]
莫相离 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:17:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
这些过程被存储和运行在数据库服务器上,以减少在客户端的处理过程,从而最大限度地提高了处理能力,因为通常情况下数据库服务器会运行地更快。存储过程并不是MySQL独有的功能,但是这个最近新增加的功能使得这个数据库比以前更具吸引力了。处置办法是:
1.当原始图片的宽或高任一比划定的尺寸小,只举行等比缩略处置,
2.当原始图片的宽与高都比划定尺寸年夜,先辈行等比缩略处置,然后算出居中地位举行裁剪

<?php
/*
*&#36;o_photo原始图片路径
*&#36;d_photo处置后图片路径
*&#36;width界说宽
*&#36;height界说高
*挪用办法cutphoto("test.jpg","temp.jpg",256,146);
*/

functioncutphoto(&#36;o_photo,&#36;d_photo,&#36;width,&#36;height){

&#36;temp_img=imagecreatefromjpeg(&#36;o_photo);
&#36;o_width=imagesx(&#36;temp_img);//获得原始图片宽
&#36;o_height=imagesy(&#36;temp_img);//获得原始图片高

//判别处置办法
if(&#36;width>&#36;o_width||&#36;height>&#36;o_height){//原始图片宽或高比划定的尺寸小,举行紧缩

&#36;newwidth=&#36;o_width;
&#36;newheight=&#36;o_height;

if(&#36;o_width>&#36;width){
&#36;newwidth=&#36;width;
&#36;newheight=&#36;o_height*&#36;width/&#36;o_width;
}

if(&#36;newheight>&#36;height){
&#36;newwidth=&#36;newwidth*&#36;height/&#36;newheight;
&#36;newheight=&#36;height;
}

//缩略图片
&#36;new_img=imagecreatetruecolor(&#36;newwidth,&#36;newheight);
imagecopyresampled(&#36;new_img,&#36;temp_img,0,0,0,0,&#36;newwidth,&#36;newheight,&#36;o_width,&#36;o_height);
imagejpeg(&#36;new_img,&#36;d_photo);
imagedestroy(&#36;new_img);


}else{//原始图片宽与高都比划定尺寸年夜,举行紧缩后裁剪

if(&#36;o_height*&#36;width/&#36;o_width>&#36;height){//先断定width与划定不异,假如height比划定年夜,则ok
&#36;newwidth=&#36;width;
&#36;newheight=&#36;o_height*&#36;width/&#36;o_width;
&#36;x=0;
&#36;y=(&#36;newheight-&#36;height)/2;
}else{//不然断定height与划定不异,width自顺应
&#36;newwidth=&#36;o_width*&#36;height/&#36;o_height;
&#36;newheight=&#36;height;
&#36;x=(&#36;newwidth-&#36;width)/2;
&#36;y=0;
}

//缩略图片
&#36;new_img=imagecreatetruecolor(&#36;newwidth,&#36;newheight);
imagecopyresampled(&#36;new_img,&#36;temp_img,0,0,0,0,&#36;newwidth,&#36;newheight,&#36;o_width,&#36;o_height);
imagejpeg(&#36;new_img,&#36;d_photo);
imagedestroy(&#36;new_img);

&#36;temp_img=imagecreatefromjpeg(&#36;d_photo);
&#36;o_width=imagesx(&#36;temp_img);//获得缩略图宽
&#36;o_height=imagesy(&#36;temp_img);//获得缩略图高

//裁剪图片
&#36;new_imgx=imagecreatetruecolor(&#36;width,&#36;height);
imagecopyresampled(&#36;new_imgx,&#36;temp_img,0,0,&#36;x,&#36;y,&#36;width,&#36;height,&#36;width,&#36;height);
imagejpeg(&#36;new_imgx,&#36;d_photo);
imagedestroy(&#36;new_imgx);
}

}
?>而且其固有的弹性使得它易于扩展以处理不断增长的需求,或当需求MySQL学习教程减弱时缩减规模。
谁可相欹 该用户已被删除
沙发
发表于 2015-1-19 06:45:21 | 只看该作者
如果你是从“学习某一种数据库应用软件,从而获得应聘的资本和工作机会”的角度来问的话。
飘飘悠悠 该用户已被删除
板凳
发表于 2015-1-27 12:52:01 | 只看该作者
不好!如果出了错;不好调试;不好处理!其实web开发将代码分为3层:web层;业务逻辑层和数据访问层;一般对数据库的操作都在数据访问层来做;这样便于调试和维护!而且将来如果是换了数据库的话;你只需要改数据层的代码;其他层的基本可以不变!要是你在jsp中直接调用sql数据库;那么如果换了数据库呢?岂不都要改?如果报了异常呢?怎么做异常处理?
地板
发表于 2015-2-11 10:08:49 | 只看该作者
只能告诉你,学好数据库语言和原理,多见识几种数据库软件,比一棵树上吊死要好。
老尸 该用户已被删除
5#
发表于 2015-3-2 10:37:22 | 只看该作者
对一张百万级别的表建游标,同时又没有什么过滤条件,取得游标效率是如果直接SQL查询百万条数据;如果再对每条记录做处理,耗时将更长。
透明 该用户已被删除
6#
发表于 2015-3-11 03:39:25 | 只看该作者
大家注意一点。如下面的例子:
若天明 该用户已被删除
7#
发表于 2015-3-17 20:09:17 | 只看该作者
另一个是把SQL语句写到服务器端,就是所谓的SP(存储过程);
爱飞 该用户已被删除
8#
发表于 2015-3-24 23:35:32 | 只看该作者
总感觉自己还是不会SQL
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-29 07:23

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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