ScaleImageToShapeSize

HtmlSaveOptions.ScaleImageToShapeSize property

指定在导出为 HTML、MHTML 或 EPUB 时,Aspose.Words 是否将图像缩放至边界形状大小。 默认值为真的.

public bool ScaleImageToShapeSize { get; set; }

评论

Microsoft Word 文档中的图像是一种形状。形状有一个大小,image 有它自己的大小。尺寸没有直接联系。例如,图像可以是 1024x786 像素 ,但显示该图像的形状可以是 400x300 点。

为了在浏览器中显示图像,必须将其缩放到形状大小。 ScaleImageToShapeSize属性控制 image 的缩放发生位置:在导出为 HTML 期间在 Aspose.Words 中或在显示文档时在浏览器中。

什么时候ScaleImageToShapeSize真的 ,图像在导出为 HTML 期间由 Aspose.Words 使用高质量缩放进行缩放。什么时候ScaleImageToShapeSize错误的,图像以其原始尺寸输出,浏览器必须对其进行缩放。

一般来说,浏览器的缩放速度很快,但质量很差。因此,您通常会在浏览器中获得更好的 显示质量和更小的文件大小ScaleImageToShapeSize真的 但打印质量更好并且转换速度更快ScaleImageToShapeSize错误的

除了包含单个光栅图像的形状外,此选项还会影响由光栅图像组成的 组形状。如果ScaleImageToShapeSize错误的并且组形状包含光栅图像 ,其固有分辨率高于中指定的值ImageResolutionAspose.Words will 增加该组的渲染分辨率。这样可以在保存为 HTML 时更好地保持分组高分辨率 图像的质量。

例子

演示如何在保存为 .html 时禁用图像缩放至其父形状尺寸。

Document doc = new Document();
            DocumentBuilder builder = new DocumentBuilder(doc);

            // 插入一个包含图像的形状,然后使该形状比图像小得多。
#if NET48 || JAVA
            Image image = Image.FromFile(ImageDir + "Transparent background logo.png");

            Assert.AreEqual(400, image.Size.Width);
            Assert.AreEqual(400, image.Size.Height);
#elif NET5_0_OR_GREATER
            SKBitmap image = SKBitmap.Decode(ImageDir + "Transparent background logo.png");

            Assert.AreEqual(400, image.Width);
            Assert.AreEqual(400, image.Height);
#endif

            Shape imageShape = builder.InsertImage(image);
            imageShape.Width = 50;
            imageShape.Height = 50;

            // 将包含带有图像的形状的文档保存到 HTML 将在本地文件系统中创建一个图像文件
            // 对于每个这样的形状。输出 HTML 文档将使用 <image>标签来链接并显示这些图像。
            // 当我们将文档保存为HTML时,我们可以传递一个SaveOptions对象来确定
            // 是否将形状内的所有图像缩放到其形状的大小。
            // 将“ScaleImageToShapeSize”标志设置为“true”将缩小每个图像
            // 到包含它的形状的大小,这样保存的图像就不会大于文档要求的大小。
            // 将“ScaleImageToShapeSize”标志设置为“false”将保留这些图像的原始尺寸,
            // 这将占用更多空间以换取保持图像质量。
            HtmlSaveOptions options = new HtmlSaveOptions { ScaleImageToShapeSize = scaleImageToShapeSize };

            doc.Save(ArtifactsDir + "HtmlSaveOptions.ScaleImageToShapeSize.html", options);

            FileInfo fileInfo = new FileInfo(ArtifactsDir + "HtmlSaveOptions.ScaleImageToShapeSize.001.png");

#if NET48 || JAVA
        if (scaleImageToShapeSize)
            Assert.That(3000, Is.AtLeast(fileInfo.Length));
        else
            Assert.That(20000, Is.LessThan(fileInfo.Length));
#elif NET5_0_OR_GREATER
        if (scaleImageToShapeSize)
            Assert.That(10000, Is.AtLeast(fileInfo.Length));
        else
            Assert.That(30000, Is.LessThan(fileInfo.Length));
#endif

也可以看看