2012-02-08 17 views
2

服務器配置:如何獲取ColdFusion來縮放任何類型的圖像?

  • 的Windows Server 2003
  • IIS 6
  • 的ColdFusion 8標準版
  • Java版本6更新18

我有一個ColdFusion應用程序,允許用戶上傳將添加到現有PDF中的圖像。當圖像被添加到PDF中時,它們必須適合最小/最大高度和寬度,所以上傳的圖像需要縮放以適合。

例如,假設給定圖像的最小高度和寬度爲100x100,最大高度和寬度爲200x200,並且用戶上傳500x1000的圖像。我使用下面的邏輯縮放圖像而不會使圖像傾斜(它保持其原始形狀)爲100x200。對於小於最小值的圖像,將按比例放大(在上例中,50x50圖像將按比例放大至100x100)。

不幸的是,我遇到了很多用戶上傳「無效圖像」的問題。我知道ColdFusion在漸進式JPEG和CMYK JPEG中有問題,但即使是一些TIFF也會出現錯誤。此外,一個3MB的TIFF圖像需要一分鐘的時間才能縮放(更不用說發生分辨率的損失了,我已經提交了這個分離的問題here。)

我已經添加了邏輯來防止ColdFusion嘗試處理通過使用IsImageFile()函數產生「無效圖像」,但用戶在他們可以在PC上打開並查看圖像時非常沮喪,但我們不能接受它。在線印刷公司(即Shutterfly,柯達等)是否有這些問題?我不記得在這些網站上遇到過問題(儘管我知道它們可能不一定使用ColdFusion)。

有關我可以做什麼以允許使用更多類型的圖像(漸進式,CMYK等)並提高性能的想法?

+1

imagemagick.org over cfimage for reliability and speed – Henry 2012-02-08 23:23:08

回答

3

您可能必須使用非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應用程序的服務器上支持的格式,請使用GetReadableImageFormats函數和GetWriteableImageFormats函數。

的ColdFusion支持在Macintosh,Windows和Unix的以下默認圖像格式操作系統:

JPEG

GIF

TIFF

PNG

BMP

的ColdFusion不支持以下圖像格式:

動畫GIF

多頁TIFF

PSD

AI

CMYK支持

的cfimage標籤支持讀取和寫入CMYK圖像,但不支持需要轉換圖像的動作。例如,您可以將CMYK圖像與read,write,writeToBrowser,resize,rotate和info操作一起使用。您不能將CMYK圖像與轉換,驗證碼和邊框操作一起使用。相同的規則適用於圖像功能。例如,ImageNew,ImageRead和ImageWrite函數支持CMYK圖像,但ImageAddBorder函數不支持。