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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[经验] 简单调整相片默认缩略图,帮你轻松实现优质的个性相册展示效果

  [复制链接]
onwulc 发表于 2009-11-3 11:30:42 | 显示全部楼层 |阅读模式
UCHome插件
语言编码: GBK简体 UTF8简体 BIG5繁体 
插件名称: 相片优化显示
插件作者: Floy
适用版本: UCHome 2.0
本帖最后由 onwulc 于 2009-11-3 11:31 编辑

UCH的站长都知道,默认的相册页中,图片的缩略图都是等比缩放,长宽都不超过60PX的。这样就存在个问题,大部分图片缩略后略显偏小,而且看上去比较模糊,看起来不太爽。

但如果对代码稍作改动,就可以轻松实现优质的个性相册展示效果,比如把缩略图缩放到100x100px,并且还能保证图片不变形。

如何实现正方形缩放而不变形的呢?比如一张人相照是1024X768,正常调整100X100的话,肯定会变形,但如果我们就要考虑对照片的长度进行加工,取中间宽768加度768的区域进行缩放的话,图片就不会失真了。这其实是建立在一个前提上的,那就是照片的中心区域才是核心区域!从实际效果来看,效果不错,确实这样。babytree.com的用户相册也是这种方法缩略的

先给看演示,大家看看,这种方式是否你想要的,如果需要留下邮箱,我给你发详细代码
演示地址:http://home.baby868.com/album.php

评分

1

查看全部评分

 楼主| onwulc 发表于 2009-11-3 11:37:59 | 显示全部楼层
下面就是生成指定尺寸的缩略图的函数
  1. //生成指定尺寸的缩略图
  2. function make_m_thumb($srcfile,$objfile,$w,$h) {
  3.         global $_SGLOBAL;

  4.         //获取图片信息
  5.         $im = '';
  6.         if($data = getimagesize($srcfile)) {
  7.                 if($data[2] == 1) {
  8.                         $make_max = 0;//gif不处理
  9.                         if(function_exists("imagecreatefromgif")) {
  10.                                 $im = imagecreatefromgif($srcfile);
  11.                         }
  12.                 } elseif($data[2] == 2) {
  13.                         if(function_exists("imagecreatefromjpeg")) {
  14.                                 $im = imagecreatefromjpeg($srcfile);
  15.                         }
  16.                 } elseif($data[2] == 3) {
  17.                         if(function_exists("imagecreatefrompng")) {
  18.                                 $im = imagecreatefrompng($srcfile);
  19.                         }
  20.                 }
  21.         }
  22.        
  23.         if(!$im) return '';
  24.        
  25.         $srcw = imagesx($im);
  26.         $srch = imagesy($im);
  27.        
  28.         $p = $srcw/$srch;
  29.         $sw = $sh = $tw = $th = 0;//初始化切割图片坐标
  30.         if($srcw>$w || $srch>$h){
  31.                 if($p>1){
  32.                         $sw = ceil(($srcw - $srch)/2);
  33.                         $tw = $srch;
  34.                         $sh = 0;
  35.                         $th = $srch;
  36.                 }elseif($p<1){
  37.                         $sw = 0;
  38.                         $sh = ceil(($srch - $srcw)/2);
  39.                         $tw = $srcw;
  40.                         $th = $srcw;
  41.                 }else{
  42.                         $sh = $sw = 0;
  43.                         $th = $srch; $tw = $srcw;
  44.                 }
  45.         }


  46.                 if(function_exists("imagecreatetruecolor") && function_exists("imagecopyresampled") && @$ni = imagecreatetruecolor($w, $h)) {
  47.                         imagecopyresampled($ni, $im, 0, 0, $sw, $sh, $w, $h, $tw, $th);

  48.                 } elseif(function_exists("imagecreate") && function_exists("imagecopyresized") && @$ni = imagecreate($w, $h)) {
  49.                         imagecopyresampled($ni, $im, 0, 0, $sw, $sh, $w, $h, $tw, $th);
  50.                 } else {
  51.                         return '';
  52.                 }


  53.                 if(function_exists('imagejpeg')) {
  54.                         imagejpeg($ni, $objfile);
  55.                 } elseif(function_exists('imagepng')) {
  56.                         imagepng($ni, $objfile);
  57.                 }
  58.                 imagedestroy($ni);

  59.         if(!file_exists($objfile)) {
  60.                 return '';
  61.         } else {
  62.                 return $objfile;
  63.         }       

  64. }
复制代码
回复

使用道具 举报

lyongde 发表于 2009-11-3 11:40:13 | 显示全部楼层
回复

使用道具 举报

 楼主| onwulc 发表于 2009-11-3 11:43:00 | 显示全部楼层
如果也想使用演示站点的相册 展示效果,请留下邮箱
回复

使用道具 举报

ttfok 发表于 2009-11-3 11:45:58 | 显示全部楼层
回复

使用道具 举报

northabc 发表于 2009-11-3 12:06:28 | 显示全部楼层
Very Good, Please share it.
northabc@hotmail.com
回复

使用道具 举报

 楼主| onwulc 发表于 2009-11-3 13:55:09 | 显示全部楼层
如果有不风想法的,请给点意见,我想办法改进
回复

使用道具 举报

dzslove 发表于 2009-11-3 13:57:28 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

dzslove 发表于 2009-11-3 13:58:51 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

 楼主| onwulc 发表于 2009-11-3 14:10:45 | 显示全部楼层
演示站 这样是破格吗?
dzslove 发表于 2009-11-3 13:58


感谢提出问题,这是样式控制出错,控制长度即可,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 14:26 , Processed in 0.040353 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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