是否可以让 ImageCache 使用默认图像?或者使用 htaccess 为 imagecache 提供默认图像进行处理?我们的一些客户站点大于 4GB,处理他们不需要的所有图像是非常痛苦的。我试过使用 htaccess,但 ImageCache 不处理文件,只是最终使用搞砸了布局的文件尺寸。
有什么想法吗?
最佳答案
据我了解 ImageCache 响应 URIs 像
http://www.yourdomain.com/default/files/imagecache/set/images/pic.png
其中
http://www.yourdomain.com
是您的域, files/imagecache
是图像缓存路径, set
是预定义的图像处理设置集,其余部分(此处: images/pic.png
)是原始图像的实际相对路径。所以,如果 pic.png 不存在,另一个文件 (default.png) 应该提供给 ImageCache。不存在文件的 .htaccess 解决方案可能是:
RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule ^([^.]+)\.[gif|jpg|png]$ /images/default.png [L]
现在 ImageCache 请求不存在的
images/pic.png
并获得 images/default.png
服务,处理它并将其保存在 default/files/imagecache/set/images/pic.png
。好吧,至少这是我的理论。
问候, 保罗
-############-
关于第一条评论的编辑:
好的,我查看了模块。在
imagecache.module
中,第 386 行启动了辅助函数 _imagecache_cache($presetname, $path)
。在这个函数中检查原始文件的存在(第 403 行)。更改此块 // Check if the path to the file exists.
if (!is_file($src) && !is_file($src = file_create_path($src))) {
watchdog('imagecache', '404: Unable to find %image ', array('%image' => $src), WATCHDOG_ERROR);
header("HTTP/1.0 404 Not Found");
exit;
};
到
// Check if the path to the file exists.
if (!is_file($src) && !is_file($src = file_create_path($src))) {
watchdog('imagecache', '404: Unable to find %image ', array('%image' => $src), WATCHDOG_ERROR);
/*header("HTTP/1.0 404 Not Found");
exit;*/
$src = 'sites/all/modules/imagecache/sample.png';
};
(注意:我将原始代码行作为注释。您可以将 $src 设置为您想要的任何默认文件。)
关于drupal - 原图不存在时,如何提供默认图片文件供ImageCache使用和处理?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3073330/