继续修复sablog-x 2.0的缩略图尺寸bug

前些天发了篇南京之行的图片日志,发现把图片附件插入到文章中后,缩略图悬浮信息里的尺寸显示有问题:

thumb-size-bug.png

查看缩略图显示代码,发现问题出在 include\func\attachment.func.php 153~170行:

$a_thumb_path = $attachdb[$attachid]['thumb_filepath'];
$a_path = $attachdb[$attachid]['filepath'];

if ($attachdb[$attachid]['thumb_filepath'] && $options['attachments_thumbs'] && file_exists(SABLOG_ROOT.$a_thumb_path)) {
    $attachdb[$attachid]['filepath'] = $attachdb[$attachid]['thumb_filepath'];
    $a_path = $a_thumb_path;
} else {
    $size = explode('x', strtolower($options['attachments_thumbs_size']));
    $imagesize = @getimagesize(SABLOG_ROOT.$a_path);
    $im = scale_image( array(
        'max_width'     => $size[0],
        'max_height' => $size[1],
        'cur_width'     => $imagesize[0],
        'cur_height' => $imagesize[1]
    ));
    $attachdb[$attachid]['thumb_width'] = $im['img_width'];
    $attachdb[$attachid]['thumb_height'] = $im['img_height'];
}

把第161行挪到第155行去,改成:

$a_thumb_path = $attachdb[$attachid]['thumb_filepath'];
$a_path = $attachdb[$attachid]['filepath'];
$imagesize = @getimagesize(SABLOG_ROOT.$a_path);

if ($attachdb[$attachid]['thumb_filepath'] && $options['attachments_thumbs'] && file_exists(SABLOG_ROOT.$a_thumb_path)) {
    $attachdb[$attachid]['filepath'] = $attachdb[$attachid]['thumb_filepath'];
    $a_path = $a_thumb_path;
} else {
    $size = explode('x', strtolower($options['attachments_thumbs_size']));
    $im = scale_image( array(
        'max_width'     => $size[0],
        'max_height' => $size[1],
        'cur_width'     => $imagesize[0],
        'cur_height' => $imagesize[1]
    ));
    $attachdb[$attachid]['thumb_width'] = $im['img_width'];
    $attachdb[$attachid]['thumb_height'] = $im['img_height'];
}

这样,在缩略图的alt信息里就会显示原图的大小了。

修复sablog-x 2.0水印bug并给缩略图添加水印

本文针对sablog-x 2.0 20091109版,给图片附件开启水印效果无效,修复方法如下

打开 include\func\image.func.php,第36行

$waterimg = '../templates/'.$options['templatename'].'/images/watermark.png';

修改为:

$waterimg = './templates/'.$options['templatename'].'/images/watermark.png';

修改以后原图能加上水印了,但是不会处理缩略图,而正文中出现的照片大多都是缩略图,要给缩略图加水印,修改如下:

打开 admin\uploadfiles.php,第120行

create_watermark($path);
$attach['size'] = filesize($path);

修改为:

create_watermark($path);
if ($attach_data['thumbwidth'] > $watermark_size[0] && $attach_data['thumbheight'] > $watermark_size[1]) {
    create_watermark($attach_dir.$thumb_data['thumbfilepath']);
}
$attach['size'] = filesize($path);