社区
基础编程
帖子详情
PHP新闻里创建略缩图怎么实现?
dobly
2003-09-13 07:55:08
是不是在上传图时以二进制加入到数据库里去?
...全文
27
7
打赏
收藏
PHP新闻里创建略缩图怎么实现?
是不是在上传图时以二进制加入到数据库里去?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
loswing
2003-10-22
打赏
举报
回复
学
yykforever
2003-10-22
打赏
举报
回复
up
「已注销」
2003-09-14
打赏
举报
回复
至于数据库,只纪录文章分类和静态页面的文件名。
这种做法应该是大多数大型新闻管理系统常用的方法吧~!
毕竟跟检索数据库比起来,直接调用html文件还是要快很多啊,特别是想sina那样的新闻站点~!
如果新闻量小,把所有数据都放数据库里,也无所谓的~!
「已注销」
2003-09-14
打赏
举报
回复
偶是这样做带图片的新闻系统的:
类似邮件系统的附件,将图片上传至统一图片文件架并提示出文件名(如15103092373f5d26c4dddd1.JPG)。
在发表新闻页面,只需要在文章编辑框中预期位置上顶头写上“#attach 15103092373f5d26c4dddd1.JPG”就可以了,生成静态页面时,程序会自己解析出图片路径。
这样,就可以在文章中任意定位图片的位置了~!
boystones
2003-09-14
打赏
举报
回复
学习
feel8
2003-09-13
打赏
举报
回复
PHP中大图缩小图的程序实例:(在WINDOWS和LINUX平台都调试通过了。)
1)上传图片页面:(片段)
在<head></head>中间加入下面程序,(这段程序很有用,可以在前台,用户端判断用户上传的文件类型,控制用户的上传文件)
<script language="JavaScript">
<!--
function CheckForm(theForm)
{
var fileext=theForm.zhaopian_up.value.substring(theForm.zhaopian_up.value.length-4,theForm.zhaopian_up.value.length)
fileext=fileext.toLowerCase()
if (!(fileext=='.jpg' || fileext=='.png'))
{alert("对不起,不正确的照片文件,必须为*.jpg或*.png文件 !");
theForm.zhaopian_up.focus();
return false;
}
return true;
}
// -->
页面中加入上传表单:
<FORM ENCTYPE="multipart/form-data" ACTION="photo_upload2.php" METHOD="POST" onsubmit="return CheckForm(this)">
注:请先上传照片,后填下表。第一张为封面照片,只能传jpg图片,小于300K,少于9张。
<p class="big"> 上传照片:</p>
<input type="file" name="zhaopian_up" size="20"> <INPUT TYPE="submit" value="上传">
</form>
2)处理页面程序,包含判断图片大小,上传拷贝,缩图,生成小图文件,图片ID存入数据库等:(片段)
<?
//取得上传文件大小,300K:
if ($zhaopian_up_size>307200) {
$wrong_massage="对不起,你上传的文件大小超过了300K,请缩小图再传!";
Header("Location:include/wrong_massage.php?wrong_massage=$wrong_massage");
exit();
}
//自动缩图$srcFile原文件,大图;$photo_small目标文件,小图;$dstW,$dstH是小图的宽,高。
function makethumb($srcFile,$photo_small,$dstW,$dstH) {
$data = GetImageSize($srcFile,&$info);
switch ($data[[2]]) {
case 1: //图片类型,1是GIF图
$im = @ImageCreateFromGIF($srcFile);
break;
case 2: //图片类型,2是JPG图
$im = @imagecreatefromjpeg($srcFile);
break;
case 3: //图片类型,3是PNG图
$im = @ImageCreateFromPNG($srcFile);
break;
}
$srcW=ImageSX($im);
$srcH=ImageSY($im);
$ni=ImageCreate($dstW,$dstH);
ImageCopyResized($ni,$im,0,0,0,0,$dstW,$dstH,$srcW,$srcH);
ImageJpeg($ni,$photo_small);
//ImageJpeg($ni); //在显示图片时用,把注释取消,可以直接在页面显示出图片。
}
$srcFile=$zhaopian_up;
//取得文件扩展名:
$type=substr(strrchr($zhaopian_up_name,"."),1);
$photo_ID=time();
$photo_path="user_picture/$user/";
if(is_dir($photo_path)!=TRUE) mkdir($photo_path,0777);
$photo_small=$photo_path."/".$photo_ID."_s.".$type; //小图
$photo_s=fopen($photo_small,"w+");
if ($type=="png" || $type=="jpg") makethumb($srcFile,$photo_small,110,130);//110,130为小图宽,高
?>
在显示图片的程序中,只需从数据库中读出图片ID,用$photo_path."/".$photo_ID."_s.".$type就是显示小图,加个链接,就可以显示大图$photo_path."/".$photo_ID.".".$type;
feel8
2003-09-13
打赏
举报
回复
可以有二种方法,一是直接把原来的大图放上去,在htm中限制图片大小,这种方法不是太好。
还有一种是用gd库。
图片最好不要放在数据库里,特别像新闻系统这种记录 数较多的程序。影响查询速度。
用GD库生成高质量的缩略图片
<?
$FILENAME="image_name";
// 生成图片的宽度
$RESIZEWIDTH=400;
// 生成图片的高度
$RESIZEHEIGHT=400;
function ResizeImage($im,$maxwidth,$maxheight,$name){
$width = imagesx($im);
$height = imagesy($im);
if(($maxwidth && $width > $maxwidth) || ($maxheight && $height > $maxheight)){
if($maxwidth && $width > $maxwidth){
$widthratio = $maxwidth/$width;
$RESIZEWIDTH=true;
}
if($maxheight && $height > $maxheight){
$heightratio = $maxheight/$height;
$RESIZEHEIGHT=true;
}
if($RESIZEWIDTH && $RESIZEHEIGHT){
if($widthratio < $heightratio){
$ratio = $widthratio;
}else{
$ratio = $heightratio;
}
}elseif($RESIZEWIDTH){
$ratio = $widthratio;
}elseif($RESIZEHEIGHT){
$ratio = $heightratio;
}
$newwidth = $width * $ratio;
$newheight = $height * $ratio;
if(function_exists("imagecopyresampled")){
$newim = imagecreatetruecolor($newwidth, $newheight);
imagecopyresampled($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
}else{
$newim = imagecreate($newwidth, $newheight);
imagecopyresized($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
}
ImageJpeg ($newim,$name . ".jpg");
ImageDestroy ($newim);
}else{
ImageJpeg ($im,$name . ".jpg");
}
}
if($_FILES['image']['size']){
if($_FILES['image']['type'] == "image/pjpeg"){
$im = imagecreatefromjpeg($_FILES['image']['tmp_name']);
}elseif($_FILES['image']['type'] == "image/x-png"){
$im = imagecreatefrompng($_FILES['image']['tmp_name']);
}elseif($_FILES['image']['type'] == "image/gif"){
$im = imagecreatefromgif($_FILES['image']['tmp_name']);
}
if($im){
if(file_exists("$FILENAME.jpg")){
unlink("$FILENAME.jpg");
}
ResizeImage($im,$RESIZEWIDTH,$RESIZEHEIGHT,$FILENAME);
ImageDestroy ($im);
}
}
?>
<img src="<? echo($FILENAME.".jpg?reload=".rand(0,999999)); ?>"><br><br>
<form enctype="multipart/form-data" method="post">
<br>
<input type="file" name="image" size="50" value="浏览"><p>
<input type="submit" value="上传图片">
</form>
</body>
</html>
PHP
面试题(一)
用
PHP
实现
一个双向队列(使用deque) deque,全名double-ended queue,是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。双向队列(双端队列)就像是一 个...
[の项目练习]Vue-Cli、API的头条
新闻
项目
一、API 接口注册 1. 注册申请 聚合数据【点击进入】 ... 申请后获得一个key值 2. API 接口说明 ...接口备注:返回头条,社会,国内,娱乐,体育,军事,科技,财经,时尚等
新闻
信息 3. 请求参数说明
PHP
新手面试题集
PHP
新手面试题集第一份:
PHP
新手面试题总100分简述题(50分)1、用
PHP
打印出前一天的时间格式是2006-5-10 22:21:21(2分)echo date(Y-m-d H:i:s, strtotime(-1 day));2、echo(),print(),print_r()的区别(3分)echo是
PHP
...
JavaScript 拖拉缩放效果
拖拉缩放效果,
实现
通过鼠标拖动来调整层的面积(宽高)大小。例如选框效果。 这
里
的拖拉缩放比一般的选框复杂一点,能设置八个方位(方向)的固定触发点,能设置最小范围,最大范围和比例缩放。 跟拖放效果一样,程序的...
网站架构--之页面静态化、图片服务器分离、负载均衡
1、HTML静态化其实大家都知道,效率最高、消耗最小的就是纯静态化的html页面,所以我们尽可能使我们...问的各个门户站点的
新闻
频道,甚至他们的其他频道,都是通过信息发布系统来管理和
实现
的,信息发布系统可以
实现
...
基础编程
21,886
社区成员
140,364
社区内容
发帖
与我相关
我的任务
基础编程
从PHP安装配置,PHP入门,PHP基础到PHP应用
复制链接
扫一扫
分享
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章