【问题标题】:Changepic and keep original image size with adjust parameter使用调整参数更改图片并保持原始图像大小
【发布时间】:2013-12-30 14:56:18
【问题描述】:

我有一个模板,我正在尝试将图片的来源从图像 1 更改为图像 2 - 但我希望图像 2 保持它上传到服务器的原始大小。(我想要它在图像 1 的位置,但它自己的尺寸。)

为此,我认为我需要使用 adjust 参数 - 我已经尝试过。 adjust=100% 的描述是“图片已调整为与原始大小成比例”。 - 这听起来像是我需要做的。

但是,在我的 docx 输出中,这似乎将图像大小设置为页面宽度的 100%,而不是与图像大小相关。 (在word image properties中,它显示我的图像是208%,所以我认为它与我的文件无关!)

这是 opentbs 中的错误,还是我误解了文档?如果是这样,我应该怎么做,否则,任何人都可以解决问题吗?我尝试完全不使用adjust,但这似乎与adjust=inside 具有相同的行为——我认为这是默认设置。

非常感谢您提供了一个很棒的工具!

编辑:导致错误的标签如下。我发现从一无所有开始,并且仅在 word doc 中使用图像时,该问题是可重现的。 Word 2010,OpenTBS 1.8。

[onshow.logo;ope=changepic;tagpos=after;adjust=100%]

【问题讨论】:

  • 你看过这篇文章吗? tinybutstrong.com/forum.php?thr=2761 或者您实际上在文档中使用 `adjust=100%' 与在同一图像上不使用调整参数时看到了不同的行为?
  • 你好,莎拉!那是你要链接的帖子吗?似乎与您的以下句子有些无关。无论如何,无论如何,我的标签出现在我的图像之后 - 我刚刚尝试使用 tagpos 参数来查看指定是否有帮助,但没有区别。是的,我看到你所说的两种调整行为有不同的行为,尽管我相信这是因为adjust=inside 是默认行为? (在查看您链接的那篇文章时,这就是库在实现 adjust 之前的行为方式。)
  • 是的,这就是我想要的帖子。只是试图在这个问题上归零。您可以尝试在 tbs_plugin_opentbs.php 中四处寻找。有一个函数 TbsPicAdjust 包含一个静音的 getimagesize 函数调用 - 删除调用前面的 @ 可能会为您提供更多信息。我个人没有使用调整,我只是用一个块设置我想要的尺寸(可能是你的解决方法)。不幸的是,我找不到很多关于 adjust 的信息,而且我现在没有一个好的设置来测试它......
  • 是的,我之前看过。 getimagesize 正确返回,看起来单个函数应该正确保留图像大小,但我没有按照它来写 Word XML。也许明天会跟进。通过在drawing 标签的维度属性中插入 TBS 标签,您将如何使用块设置维度?我可能需要研究一下,但如果可能的话,我更希望我仍然可以用 word 打开我的模板,这是一个相当大的模板。
  • 您是否检查过模板中使用的图像具有 100 % 的比例? (图像上的上下文菜单+项目“大小和位置”+选项卡“大小”+部分“比例”)

标签: docx opentbs


【解决方案1】:

问题是由 TbsPicAdjust() 函数导致的,因为 php 的 getimagesize() 函数正在返回,因此该函数期望图像的尺寸以点而不是像素为单位。

解决方法是将TbsPicGetDim_OpenXML_dml() 函数中的两个固定系数替换为 9,525,而不是最初编码的 12,700。 (如果尺寸以点为单位,而不是像素,这将是一个合适的值。)

经过一些研究,据我所知,getimagesize() 总是返回以像素而不是点为单位的大小,所以在我看来这可能是一个潜在的错误?


系数补充来源,结合个人计算:http://openxmldeveloper.org/discussions/formats/f/15/p/396/933.aspx

【讨论】:

    【解决方案2】:

    解决方法:

    这取决于您使用的是新 (.docx) 还是旧 (.doc) 样式的文档。如果您有较新的样式,我不确定您是否可以更改图像大小而无需将标记直接放入 XML。旧的(我相信是 VML)风格使用<v:shape> 来描述图片,而不是<pic:pic>。使用v:shape,您只需将描述图像大小等的 CSS 样式字符串放在一起。比如:

    $imgStyle = "position:absolute;left:0;top:0;width:800;height:600"
    

    那么你的changepic标签旁边只有一个标签;类似:

    [imgStyle;att=v:shape#style]
    

    较新的样式不使用这样的样式字符串来调整图像的大小和位置,pic:pic 元素充满了描述图像的嵌套标签,因此更难了解细节(尽管您当然可以尝试)。我最终为我的图像切换创建了一个子模板,因为我的模板是新格式并且兼容旧格式(所以我必须维护两个图像块)。这使我可以直接为图像尺寸维护 XML,但仍然可以在 Word 中编辑我的主模板。我只是在我的主模板中使用了一个包含子模板的标签,例如:

    [LineItem.template;block=w:r;file='img.xml']
    

    分离手动控制的 XML 允许我在 Word 中编辑主模板,而不会损坏真正自定义的部分。但是,使用这种技术,您可能会在子模板中的 onload/onshow 标记上遇到一些问题——我在子模板中更改的所有内容都由一个块控制。

    【讨论】:

    • 非常感谢这位莎拉。我所有的工作都是docx 格式,所以我需要查看第二个解决方案,但实际上,有问题的图像无论如何都在标题中,所以也许我可以从我的主模板中删除它,并只包含应要求提供。 (所以我仍然可以用 word 编辑我的主模板,这只是我的两个标题,我必须手动编辑。)如果你不介意,我暂时不会接受,以防有人能够提供直接解决方案而不是解决方法,但我很欣赏这一点,所以我现在可以得到一个工作版本!
    • 别担心,我只是想给您一个考虑的选项 - 这并不是您问题的真正答案,只是比我可以在评论中容纳的更多信息。
    猜你喜欢
    • 2015-02-24
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多