如何让ColdFusion缩放任何类型的图像



服务器配置:

  • Windows Server 2003
  • IIS 6
  • ColdFusion 8标准版
  • Java版本6更新18

我有一个ColdFusion应用程序,它允许用户上传将添加到现有PDF中的图像。当图像被添加到PDF中时,它们必须在最小/最大高度和宽度范围内,因此上传的图像需要缩放以适应。

例如,假设给定图像的最小高度和宽度是100x100,最大高度和宽度为200x200,用户上传的图像是500x1000。我使用下面的逻辑来缩小图像,而不会使图像倾斜(保持其原始形状)到100x200。对于小于最小值的图像,将按比例放大(在上面的示例中,50x50的图像将按比例缩小到100x100)。

不幸的是,我遇到了很多用户上传"无效图像"的问题。我知道ColdFusion在处理Progressive JPEG和CMYK JPEG时存在问题,但即使是一些TIFF也会出现错误。此外,3MB TIFF图像的缩放需要一分钟以上的时间(更不用说发生的分辨率损失,我在这里作为一个单独的问题提交了这个问题。)

我添加了一些逻辑来防止ColdFusion试图使用IsImageFile()功能处理"无效图像",但当用户有一张可以在PC上打开和查看的图像时,他们会非常沮丧,但我们无法接受。在线打印公司(如Shutterfly、Kodak等)有这些问题吗?我不记得在这些网站上有过任何问题(尽管我知道他们可能不一定使用ColdFusion)。

关于我可以做些什么来允许使用更多类型的图像(渐进式、CMYK等)并提高性能,有什么想法吗?

您可能需要使用非CF解决方案,就像我们在CF8之前所做的那样。这里提到的一些库:https://stackoverflow.com/questions/158756/what-is-the-best-image-manipulation-library

缩放时间在很大程度上取决于您选择使用的算法。在ColdFusion中向PDF添加图像充其量是不可预测的。我发现它们经常被夸大,大大增加了PDF文件的大小。

以下是文档中的一些信息:http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=functions_in-k_16.html

支持的图像文件格式

cfimage标记对多种不同的文件格式进行操作。要列出部署ColdFusion应用程序的服务器上支持的格式,请使用GetReadableImageFormat函数和GetWriteableImageFormats函数。

ColdFusion在Macintosh、Windows和Unix操作系统上支持以下默认图像格式:

JPEG

GIF

TIFF

PNG

BMP

ColdFusion不支持以下图像格式:

动画GIF

多页TIFF

PSD

AI

CMYK支持

cfimage标记支持读取和写入CMYK图像,但不支持需要转换图像的操作。例如,您可以将CMYK图像用于读取、写入、写入浏览器、调整大小、旋转和信息操作。不能将CMYK图像用于转换、captcha和边框操作。同样的规则也适用于图像函数。例如,ImageNew、ImageRead和ImageWrite函数支持CMYK图像,但ImageAddBorder函数不支持。

最新更新