EasyImages2.0/application/thumb.php

108 lines
4.0 KiB
PHP
Raw Normal View History

2021-10-30 09:19:15 +00:00
<?php
2022-01-30 00:07:26 +00:00
/*
2021-10-30 09:19:15 +00:00
// +----------------------------------------------------------------------
// | 把大图缩略到缩略图指定的范围内,不留白(原图会剪切掉不符合比例的右边和下边)
// | https://www.php.cn/php-ask-458473.html
2022-01-12 18:48:08 +00:00
2021-10-30 09:19:15 +00:00
// +----------------------------------------------------------------------
require_once __DIR__ . '/function.php';
require_once __DIR__ . '/class.thumb.php';
$src = isset($_GET['img']) ? APP_ROOT . $_GET['img'] : APP_ROOT . '/public/images/404.png'; // 原图路径
2022-01-12 18:48:08 +00:00
if (!file_exists($src)) {
exit('image does not exist');
}
2022-01-27 09:25:46 +00:00
$w = isset($_GET['width']) ? $_GET['width'] : 258; // 预生成缩略图的宽
2022-01-12 18:48:08 +00:00
2022-01-27 09:25:46 +00:00
$h = isset($_GET['height']) ? $_GET['height'] : 258; // 预生成缩略图的高
2022-01-12 18:48:08 +00:00
Thumb::show($src, $w, $h);
2022-01-30 00:07:26 +00:00
*/
/**
* 使用新的TimThumb.php生成缩略图
* TimThumb.php EasyImage修改版 by Icret
* form https://github.com/podipod/TimThumb
* 2022-1-30 06:35:08
*
* TimThumb参数指南
* 命令 作用 参数 描述
* src 图像URL 告诉TimThumb调整哪个图片
* w 宽度 宽度调整 调整输出图像的宽度
* h 高度 高度调整 调整输出图像的高度
* q 质量 0 - 100 压缩质量值越大质量越高。不建议高于95
* a 对齐 c, t, l, r, b, tl, tr, bl, br 图像对齐。 c = center, t = top, b = bottom, r = right, l = left。 可以创建对角位置
* zc 缩放/裁剪 0、1、2、3 0:根据传入的值进行缩放(不裁剪), 1:以最合适的比例裁剪和调整大小(裁剪), 2按比例调整大小并添加边框裁剪3按比例调整大小不添加边框裁剪
* f 过滤器 太多了 可以改变亮度/对比度;甚至模糊图像
* s 锐化 锐化 使得按比例缩小图片看起来有点;更清晰
* cc 画布上的颜色 十六进制的颜色值(# ffffff) 改变背景颜色。 大多数更改缩放和作物设置时使用,进而可以添加图像边界。
* ct 画布的透明度 true (1) 使用透明而忽略背景颜色
*/
require_once __DIR__ . '/function.php';
2022-02-04 15:09:44 +00:00
// 中文翻译 https://my.oschina.net/whrlmc/blog/81739
2022-01-30 00:07:26 +00:00
define('LOCAL_FILE_BASE_DIRECTORY', APP_ROOT);
2022-03-16 07:18:32 +00:00
define('MEMORY_LIMIT', '256M');
2022-01-30 00:07:26 +00:00
define('DEFAULT_WIDTH', 258);
define('DEFAULT_HEIGHT', 258);
define('FILE_CACHE_PREFIX', 'EasyImage');
define('DEFAULT_ZC', 0);
2022-02-04 15:09:44 +00:00
2022-01-30 00:07:26 +00:00
define('MAX_WIDTH', 10240);
define('MAX_HEIGHT', 10240);
define('FILE_CACHE_DIRECTORY', APP_ROOT . $config['path'] . 'thumbnails');
2022-02-04 15:09:44 +00:00
define('NOT_FOUND_IMAGE', $config['imgurl'] . '/public/images/404.png');
define('ERROR_IMAGE', $config['imgurl'] . '/public/images/404.png');
2022-01-30 00:07:26 +00:00
define('DISPLAY_ERROR_MESSAGES', false);
2022-03-16 07:18:32 +00:00
define('MAX_FILE_SIZE', 10485760); // 10 Megs 是 10485760。这是我们将处理的最大内部或外部文件大小。
2022-01-30 00:07:26 +00:00
define('FILE_CACHE_TIME_BETWEEN_CLEANS', 86400); // 多久清理一次缓存
2022-03-16 07:18:32 +00:00
define('FILE_CACHE_MAX_FILE_AGE', 86400); // 文件必须从缓存中删除多长时间
define('BROWSER_CACHE_MAX_AGE', 864000); // 浏览器缓存时间
2022-01-30 00:07:26 +00:00
global $ALLOWED_SITES;
$ALLOWED_SITES = array(
$config['domain'],
$config['imgurl'],
'flickr.com',
'staticflickr.com',
'picasa.com',
'img.youtube.com',
'upload.wikimedia.org',
'photobucket.com',
'imgur.com',
'imageshack.us',
'tinypic.com',
'mind.sh',
'mindsharelabs.com',
'mindsharestudios.com'
);
2022-03-04 13:45:10 +00:00
/**
* 修复无法生成生成webp动态图片的缩略图bug
*/
if (isset($_GET['img'])) {
// 获取图片后缀后4位
$ext = substr($_GET['img'], -4);
// 图片绝对路径
$src = APP_ROOT . $_GET['img'];
// 检测图片
if ($ext == 'webp' && isWebpAnimated($src)) {
// 输出动态的webp
header("Content-type: image/webp");
exit(file_get_contents($src, true));
}
// 非动态webp输出
require_once __DIR__ . '/TimThumb.php';
timthumb::start();
} else {
// 输出404
header("Content-type: image/webp");
exit(file_get_contents(APP_ROOT . '/public/images/404.png', true));
}