有没有一种方法可以将图像调整为实际大小,使其显示在帖子中?我有一些用户导入大图像,然后在可视编辑器中调整其大小。这很容易,因为他们可以将图像拖动到所需大小,而无需先打开图像编辑器,调整图像大小,保存图像并将其作为单独的附件上传。当然,有时这会导致帖子中的图片宽度为100px,但实际上为1500px。我想保留现有的全尺寸图片(用于链接,或稍后重新调整大小),但只需添加一个额外的尺寸(并将其保存在_wp_attachment_metadata对象中),因此此帖子中的图片尺寸正确,并有参考到全尺寸附件。

当然,所有现有帖子也应处理一次。 <img>标签可能只有一个width,只有一个height,或者没有一个:应该全部清除,因此它们都具有正确的widthheight和该尺寸的图像。

评论

您是否可以使用服务器端解决方案,该解决方案可以根据传递到现有图像URL的获取参数动态调整图像大小? Apache / Mod_Rewrite?

@hakre:您的意思是说一个后保存的过滤器会遍历帖子,并将每个图像重写为image.png?w = 300&h = 400或image-300x400.png,然后我将通过Mod_Rewrite进行选择并调整大小(以及缓存)的要求?这比一次创建大小调整后的图像(在该后保存操作中)并将其作为静态文件提供服务有优势吗?

@Jan Fabry是的,这就是我的想法。好处是,您仅应要求创建图像,因此,只要作者编辑帖子,就不会立即创建文件。除了不阻止编辑之外,它还与wp分离,因此您甚至可以创建一些服务器服务,CDN缓存盛会或其他任何东西。 :) ---如果我看对了,wp.com做类似的事情。

结合缓存,这种方法确实很有用。我会假设有一个插件。您还可以将Zenphoto与诸如Zenphoto Gallery(我自己的:lmazy.verrech.net/zenphoto-gallery)之类的插件一起安装。

@Raphael:的确,今天我研究了可能的插件,有些人采用了这种方法。如果您有什么要添加到我的候选列表中,请这样做,所有人都可以编辑。

#1 楼

我创建了两个插件,可以一起解决我的需求。他们目前处于Alpha初期,欢迎所有评论。

基本插件是按需调整大小。该插件监视上传目录中不存在文件的请求,并在需要时创建所需大小的图像。例如,image-200x100.jpg将创建并返回image.jpg,但是将其大小调整为200 x 100像素。图片使用该名称保存在目录中,因此进一步的请求由服务器直接处理。

第二个插件Resize img标签修改了<img>标签,因此其src属性包括width和/或height数据。这允许第一个插件提供正确的图像。他们在一起做我想做的事,我只需要创建一个运行一次函数即可转换所有现有帖子,但这应该很容易(我不想挂接到the_content上只能运行一次的东西)。

第三个“奖励”插件,虚拟中间图像,在WordPress中上传新图像时拦截了中间图像的创建。由于如果需要,它们仍由第一个插件创建,因此,除非实际使用它们,否则您可以指定多个图像大小而不会占用磁盘空间。不需要两个就可以工作,但这是一个简单的补充,它突显了我仍然需要围绕WordPress图像编辑器工作的事实,但是当我创建缩略图编辑器时我会这样做使用第一个插件。

评论


这些声音真的很棒!我迫不及待地想在实际情况下有时间尝试它们。

– MikeSchinkel
10 Nov 26 '23:42

好东西。您是否正在考虑将它们添加到wordpress插件存储库中?

– hakre
2010-12-7 13:11

@hakre:是的。一旦我准备好让他们进行同行评审:-)

– Jan Fabry
2010-12-7 13:12

#2 楼

我在插件目录中搜索了"resize""crop"(后者是另一个问题),并在公开的Google电子表格中记录了我的发现。插件搜索的结果编号非常混乱("resize"搜索的最后一页显示“显示273个插件中的145-150个”),所以我可能错过了一些。半相关的注释:每个人似乎都认为世界需要另一个幻灯片插件。似乎没有人意识到content_save_pre可能比the_content更好的过滤器来执行繁重的解析。 。我在括号中添加了“最多兼容”版本号。



ChoiceCuts Image Juggler,具有通过API(3.0.1)访问的多个图像处理功能。 >
AutoThumb,通过特殊的[img]短代码(2.9.2),将URL重写为使用phpThumb(2.9.2)的处理程序的URL。

图像符号链接,将网址重写为使用phpThumb的处理程序,也使用外部图像(2.6)

ImageScaler,根据需要创建新大小并更改图像中的URL(2.3)

ImageScaler Modded ,是ImageScaler(2.3.1)的略微修改版本。个人想法:前四个将URL重写为具有不同缓存形式的动态页面(类似于/wp-content/plugins/my-plugin/image.php?src=[original src]&w=100&h=50)。我更喜欢根据需要创建的真实图像,类似于ImageScaler采取的方法。但是,我将对此进行分解(并在评论中包括hakre的建议),然后首先将所有URL从/wp-content/uploads/2010/11/image.jpg重写为/wp-content/uploads/2010/11/image-100x50.jpg,然后让脚本创建丢失的图像。对此图像的第一个请求将创建该图像,所有后续请求都将使用此创建的图像。这也使我可以将功能拆分到不同的插件中。我将在单独的答案中发布此解决方案。


这些插件将图片限制为一定的最大大小(这与指定$content_width有何不同?):



JP-redesign-images,同时检查热链接的图像和超大尺寸的图像(仅当它们太大时才检查,而不仅仅是调整大小时才检查)(3.0.1)

饥饿的图片适合,检查太大的图片(3.0.0)

以下插件由于其他原因而很有趣:



TimThumb符合TinyMCE,在TinyMCE编辑器(2.8.4)中包含一个手动调整大小按钮。

#3 楼

如何利用timthumb和传递变量自动更改图像大小/尺寸和缩放级别?这样,仍然可以保持原始图像尺寸。如果您需要一些示例,请告诉我。

#4 楼

WordPress提供了三种可以配置的默认大小(小,中,大)。如果使用这些,Wordpress将创建调整大小的副本。最好使用这些样式并设置数字,使其适合当前样式。这会导致图像在整个页面上的大小没有不同,并且可以在主题更改时进行全局调整。

评论


我知道最好坚持使用预定义的图像大小,但我的客户则不:-)如果他们可以在编辑器中调整图像大小,则系统遵循该选择是合乎逻辑的。

– Jan Fabry
2010-11-10 14:51

好吧,您可以消除这种可能性,并迫使它们干净地工作;)

–拉斐尔
2010年11月11日,9:12

这也是一个有趣的问题:“如何在TinyMCE中禁用调整大小功能?”如果您知道答案,请创建一个新问题并自己回答,这对其他人可能会很有用。

– Jan Fabry
2010年11月11日15:34

#5 楼

最近发布的Image Pro插件似乎完全可以做到这一点。还没有进行自我测试,演示看起来非常令人印象深刻,请注意浏览器兼容性差(目前仅支持Firefox)。