服务器配置:
- 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函数不支持。