从缓存URL获取原始图像文件
-
16-10-2019 - |
题
是否有任何给定缓存图像产品文件返回原始功能的功能?
例子 :
=>缓存URL:
{BASEURL}/media/catalog/product/cache/2/image/9df78eab33525d08d6e5fb8d27136e95/a/l/IMAGE.jpg
=>预期的结果:
BASEURL/media/catalog/product/a/l/IMAGE.jpg
解决方案
您给出的图像URL不可能使用Magento商店使用。 我猜您希望它被混淆,但是这样做使它无法回答。
除非您要网络剪接另一个网站,否则我无法想到任何理由去构造图像路径,否则,您将可以直接访问产品模型,并且可以直接获取此信息。
但是,使用一个真实示例。例如
/Media/catalog/product/cache/1/image/9df78eab335252508d6e5fb8d27136e95/m/e/e/me/me-d1_2.jpg
de构建缓存图像路径
/media/catalog/product/cache/1/image/9df78eab33525d08d6e5fb8d27136e95/m/e/me-d1_2.jpg
|___________________________|_|_____|________________________________|_|_|__________|
| | | | | | |
Cache Directory | | | | | |
Mage/Catalog/Model/Product/Media/Config.php | | | |
getBaseMediaPath() | | | | | |
| | | | | |
| | | | | |
Store ID | | | |
Mage::app()->getStore()->getId() | | |
| | | | |
| | | | |
Subdirectory | | | |
Mage/Catalog/Model/Product/Image.php | | |
getDestinationSubdir() | | | |
| | | |
| | | |
MD5 of Image Params | | |
See below | | |
Mage/Catalog/Model/Product/Image.php
Line +324 | | |
| | |
| | |
First letter of Image Name
| |
| |
Second letter of Image Name
|
|
Original Image Name
找到原始图像
如果通过Magento Admin上传, ,原始图像位于
因此,获取原始URL非常简单,只需删除高速缓存目录路径和哈希即可。
IE。消除 cache/1/image/9df78eab33525d08d6e5fb8d27136e95/
所以
/media/catalog/product/cache/1/image/9df78eab33525d08d6e5fb8d27136e95/m/e/me-d1_2.jpg
变成
/media/catalog/product/m/e/me-d1_2.jpg
如果通过数据流/导入上传, ,原始图像位于
/媒体/导入
但是在那里将有猜测。但是,人们希望格式化其上载dir以导入实际上取决于它们,并且图像中的小主题确实不相关 - 因为它们在上传时提供了相对的路径。
关于MD5哈希的一些
($this->_keepAspectRatio ? '' : 'non') . 'proportional',
($this->_keepFrame ? '' : 'no') . 'frame',
($this->_keepTransparency ? '' : 'no') . 'transparency',
($this->_constrainOnly ? 'do' : 'not') . 'constrainonly',
$this->_rgbToString($this->_backgroundColor),
'angle' . $this->_angle,
'quality' . $this->_quality,
如果有水印,可选的arg会
$this->getWatermarkFile(),
$this->getWatermarkImageOpacity(),
$this->getWatermarkPosition(),
$this->getWatermarkWidth(),
$this->getWatermarkHeigth()
md5(implode('_', $miscParams));
因此,例如,默认
md5('non_no_no_not_ffffff_0_90')
这 md5
在整个站点上可能相同 - 对于每个图像,但是您需要找出用于生成它的值。您可以相对容易地施加强迫。
这是哈希的默认洋红色值
9df78eab33525d08d6e5fb8d27136e95
归因: sonassi.com
其他提示
简短答案 - 不。没有方法可以基于缓存图像URL返回基本图像。但是,如果删除了缓存文件夹,则应该能够直观URL,例如:
http://www.mysite.com/media/catalog/product/cache/1/image/109x298/9df78eab33525d08d6e5fb8d27136e95/u/t/uti001_2.jpg
删除产品之后的所有内容,直到前缀trie(在这种情况下,删除 cache/1/image/109x298/9df78eab33525d08d6e5fb8d27136e95/
:
http://www.mysite.com/media/catalog/product/u/t/uti001_2.jpg
但是,处理此问题的更好方法是使用对象模型:
$product = Mage::getModel('catalog/product')->load(42);
echo $product->getImage();
echo $product->getThumbnail();
这有效
$r = explode('/' ,$imagesCachePath);
unset($r[6]);
unset($r[7]);
unset($r[8]);
unset($r[9]);
$r = implode('/',$r);
在里面 list.phtml
, ,这对我有用:
echo Mage::getModel('catalog/product_media_config')->getMediaUrl( $_product->getSmallImage());