上传原图 -> 后台设置(如缩略图、大图尺寸)-> 生成缩略图和大图,所谓的“原图”就是指你最初上传的那个未经修改的图片文件。

下面我将分几种最常见的情况,为你详细讲解如何调用原图。
核心思路
要调用原图,关键在于找到织梦存储原图的路径,织梦的原图路径通常存储在数据库的 dede_addonarticle (文章附加表) 或 dede_archives (主表) 等数据表的 litpic (缩略图) 或 body (文章内容) 字段中,但有时路径是相对的,并且织梦会进行一些路径处理。
最可靠的方法是利用织梦自带的标签或函数来获取。
({dede:field.body/})中调用
这是最简单的情况,如果你在文章编辑器中直接插入了图片,那么这张图片本身就是原图(或你指定的尺寸),织梦默认会在内容中保留原图路径。

直接使用:
{dede:field.body/}
当你使用 {dede:field.body/} 标签输出文章内容时,里面的 <img> 标签 src 属性指向的就是你插入的图片,如果这张图就是原图,那它就已经被调用了。
如何确保是原图? 在后台发布文章时,插入图片后,点击“确定”前,请确保没有在“图片ALT描述”等选项中勾选“生成远程缩略图”或类似的选项,并且你的系统设置中也没有对文章内容内的图片进行自动缩放。
调用文章缩略图({dede:field.litpic/})对应的原图
这是最常见的需求,我们通常用 {dede:field.litpic/} 来调用文章列表页的缩略图,但这个调用的是后台设置生成的缩略图(如 200x150 的小图),我们希望在文章详情页点击这张缩略图时,能弹出或跳转到对应的原图。

织梦有一个非常方便的标签 field.name 可以实现这个功能。
场景:文章列表页或文章详情页,缩略图 <a> 标签的 href 指向原图。
<a href="{dede:field name='phpurl'/}/imgview.php?img={dede:field litpic/}">
<img src="{dede:field litpic/}" alt="{dede:field.title/}" />
</a>
代码解析:
<img src="{dede:field litpic/}">:这部分保持不变,用于显示缩略图。<a href="...">:这部分是关键,我们让缩略图链接到一个可以查看原图的页面。{dede:field name='phpurl'/}/imgview.php:{dede:field name='phpurl'/}会获取到你的网站php文件夹路径(如/php)。imgview.php是织梦自带的一个图片查看器脚本。?img={dede:field litpic/}:我们将缩略图的src作为参数img传递给imgview.php。
imgview.php 的工作原理:
imgview.php 接收到 img 参数(即缩略图路径)后,它会根据织梦的命名规则(原图可能是 202505/22_a.jpg,缩略图可能是 202505/22_a_200x150.jpg),自动找到并输出对应的原图。
优点:
- 织梦官方支持,兼容性好。
- 可以对原图进行一些安全处理,比如禁止盗链。
- 可以显示一个图片查看器,用户体验更好。
在图集({dede:productimagelist})中调用原图
在图集中,情况更复杂一些,因为每张图都可能有一个缩略图和一个大图,我们通常希望点击图集中的小图,能展示出高质量的大图,或者直接链接到原图。
织梦的图集标签是 {dede:productimagelist},它内部循环输出每张图片。
场景:图集中的图片,点击后链接到原图。
{dede:productimagelist}
<li>
<!--
imgsrc: 大图的路径 (通常是你后台设置的“图片大图”尺寸)
-->
<a href="[field:imgsrc/]" data-original="[field:imgurl/]">
<img src="[field:imgurl/]" alt="[field:text/]" width="200" height="150" />
</a>
</li>
{/dede:productimagelist}
代码解析:
[field:imgurl/]:这是缩略图的路径,用于<img>标签的src属性,在列表页快速加载。[field:imgsrc/]:这是大图的路径,通常是你后台设置的“图片大图”尺寸(如 800x600),它比缩略图大,但不一定是原图,我们用它作为<a>标签的href,这样点击后会跳转到或弹出这张大图。data-original="[field:imgurl/]":这是一个常见的最佳实践,我们使用data-original这个自定义属性来存储原图的路径,然后配合 jQuery 等前端库,可以实现懒加载(Lazy Load)效果,在用户需要时才加载原图,提升页面性能。
如何获取真正的原图?
织梦的图集功能在生成时,会将原图重命名并存放在 /uploads/allimg/ 目录下,缩略图和大图都是基于原图生成的。[field:imgurl/] 和 [field:imgsrc/] 指向的都是生成的文件,而不是原始上传文件。
在图集中,织梦标签默认不直接提供调用“原始上传文件”的路径,最接近“原图”的是 [field:imgsrc/],即你设置的大图尺寸,如果你需要100%的原图,可能需要修改数据库或通过其他更复杂的方式获取,但对于99%的场景,使用大图 [field:imgsrc/] 已经足够。
使用SQL直接查询(高级/不推荐)
如果你对织梦的标签不满意,或者有非常特殊的需求,可以直接使用 dede:sql 标签执行SQL查询。
场景:从附加表中获取文章内容中的原图路径。
假设你想获取某篇文章ID为 1 的正文中的第一张图片的原图路径。
{dede:sql sql="SELECT body FROM `dede_addonarticle` WHERE aid = 1"}
[field:body function='(preg_match("/src=[\'\"]?([^>\"]+)[\'\"]?/i", @me, $matches) ? $matches[1] : "")'/]
{/dede:sql}
代码解析:
SELECT body FROM ...:查询文章附加表中ID为1的文章内容。[field:body function='...'/]:对查询出的body字段内容进行处理。preg_match("/src=[\'\"]?([^>\"]+)[\'\"]?/i", @me, $matches):这是一个正则表达式,用于从HTML字符串(@me代表当前字段值)中提取第一个src属性的值,也就是图片路径。
注意:
- 这种方法非常脆弱,如果文章内容没有图片,或者HTML结构稍有变化,就可能失效。
- 直接操作数据库效率较低,且不安全,容易出错。
- 除非万不得已,否则强烈建议优先使用方法一和方法二。
总结与最佳实践
| 场景 | 推荐方法 | 代码示例 |
|---|---|---|
| 文章正文中的图片 | 直接调用内容 | {dede:field.body/} |
| 文章缩略图链接到原图 | 使用 imgview.php |
<a href="{dede:field name='phpurl'/}/imgview.php?img={dede:field litpic/}"> |
| 图集中的图片 | 调用大图路径 | <a href="[field:imgsrc/]"> |
| 特殊需求/调试 | 使用 dede:sql |
见方法四(谨慎使用) |
最终建议:
- 对于文章缩略图,方法二 (
imgview.php) 是最标准、最可靠的方式。 - 对于图集,直接使用
[field:imgsrc/]作为大图链接即可,它通常已经足够清晰。 - 如果你的缩略图命名规则和原图路径有特定规律,你也可以手动拼接原图路径,
{dede:field.litpic/}的值是uploads/2025/10/thumb_123.jpg,那么原图可能是uploads/2025/10/123.jpg,但这依赖于固定的命名规则,不如官方方法灵活。
