在开发Sax的时候就在考虑怎么实现自动生成缩略图的方案,比较好的方案是使用阿里云或者腾讯云的对象存储,自动生成压缩后的图片,但是对于小博客而已确实大材小用,后来也试过使用
timthumb
的方案,好处是可以本地处理,自动缓存,不好的就是托一长串链接,还要修改主题。同时也发现写的
function.php
方法获取缩略图有bug,考虑可以在获取缩略图的方法里处理。
function get_postthumb($obj) {
require_once('assets/thumb.php');
preg_match_all( "/<[img|IMG].*?src=[\'|\"](.*?)[\'|\"].*?[\/]?>/", $obj->content, $matches );
$thumb = '';
$attach = $obj->attachments(1)->attachment;
if($obj->fields->img) {
$thumb = $obj->fields->img;
}elseif(isset($attach->isImage) && $attach->isImage == 1){
$thumb = $attach->url;
}elseif(isset($matches[1][0])){
$thumb = $matches[1][0];
} else {
$thumb = '';
if($thumb) {
preg_match('/\/([^\/]+\.[a-z]+)[^\/]*$/',$thumb,$match);
$tempurl = str_replace('.','_thumb.',$match[1]);
if(!is_file('thumb/'.$tempurl)) {
createThumbnail($thumb,220,150,'thumb/',$tempurl);
return 'https://www.nsvita.com/thumb/'.$tempurl;
} else {
return '';
获取内容的同时会在根目录thumb下生成一个指定大小的缩略图。
thump.php
源码
function createThumbnail( $src, $width, $height, $dir, $fle ) {
$img_url = file_get_contents( $src );
$img = imagecreatefromstring( $img_url );
$o_width = imagesx($img); //取得原图宽
$o_height = imagesy($img); //取得原图高
//判断处理方法
if($width>$o_width || $height>$o_height){//原图宽或高比规定的尺寸小,进行压缩
$newwidth=$o_width;
$newheight=$o_height;
if($o_width>$width){
$newwidth=$width;
$newheight=$o_height*$width/$o_width;
if($newheight>$height){
$newwidth=$newwidth*$height/$newheight;
$newheight=$height;
$thumb = imagecreatetruecolor( $newwidth, $newheight );
I quoted this one out since I ran in compatibility issues, I'm using PHP 5.3.x
and imagesetinterpolation() doesn't exist in this version
imagesetinterpolation( $thumb, IMG_SINC ); // Recommended Downsizing Algorithm
imagecopyresampled( $thumb, $img, 0, 0, 0, 0, $newwidth, $newheight, $o_width, $o_height );
$result = imagejpeg( $thumb, $dir . $fle );
imagedestroy( $thumb );
imagedestroy( $img );
return $result;
目前这些代码不建议直接拿来用,缩略图生成尺寸有问题
typecho
本文链接: https://www.aciuz.com/tech/typecho-thumb-image.html
版权声明: 本博客所有文章除特别声明外,均采用 BY-NC 许可协议。禁止商用,转载请注明出处!
上一篇 Mac下使用Homebrew一键安装Flutter
下一篇 QQ浏览器不兼容toLocaleString解决方法
Xmind Desktop UI Kit | Xmind 桌面版设计组件Scribble Diffusion | 使用AI将草图转化为精美绘图Steam 2020年万圣节特卖活动盛大开启docker自建 Tabby Web 同步服务教程Web/App/Email/Others 灵感类网站合集Audio-Convert | 免费音频格式转换器UEditor改造记录BYD Metaverse | 比亚迪元宇宙Scriptable 实现倒计时小组件使用ChatGPT可视化SQL语句学习SQL
wys: 大佬,你好!typecho-sax-master 请问这是你开发的主题吗?
wys: 大佬,你好!typecho-sax-master 请问这是你开发的主题吗?
typeecho: 这个主题好干净,收藏!
wu先生: 收藏备用。
lucius: 密码呢!!!
future: 下载链接呢
卷土: xiunobbs aci——md编辑器还有吗
Sax简约CMS-Typecho主题 R11; VPSCHE小车博客: [...]下载主题 作者博客 [...]
狼人杀: 大佬,您现在这个主题真的不错,能分享下吗?我的邮箱:[email protected] 不胜感激。
阿达: 学习一下
使用Github Action实现Google Indexing API推送PrestaShop配合CloudFlare一直退出问题修复Universe | 3000+ UI交互组件UI Colors | Tailwind CSS自定义色彩工具CentOS 7下Puppeteer安装笔记docker自建 Tabby Web 同步服务教程使用Pinokio一键安装Stable VideoAtlas icons | 开源免费图标库Web/App/Email/Others 灵感类网站合集使用ChatGPT可视化SQL语句学习SQL
Typecho简约CMS主题Sax小米盒子3降级刷Android TV记录Mac下Flutter开发环境部署实践UEditor改造记录黑手党3 一将功成万骨枯Dart学习笔记:第一个Dart程序Centos 7安装目录列表程序h5ai记录input 的 compositionstart 和 compositionend 事件PDF.js报错workerSrc修复Vue.js项目使用prerender-spa-plugin和vue-meta-info实现SEO功能