2008-12-01 47 views
7

幾年前,我們有一位平面設計師修改了我們的網站。他的結果看起來不錯,但他不幸地通過網絡瀏覽器引入了一種新的不受支持的字體。在ASP.NET中本地化圖像

起初我喜歡「什麼!?!」......因爲我們大部分的內容都是動態的,沒有真正的方法預先製作所有的圖像。還有多種語言的問題(因爲我們知道西班牙語即將出現)。

無論如何,我決定創建一些類,通過GDI +自動生成圖像,並根據需要以編程方式緩存它們。這解決了我們最初的問題。但是,現在我們的負載急劇增加,我們的UI服務器已經出現了漏洞。

現在到了這個問題......我正在尋找用標準的Web瀏覽器字體替換大多數動態GDI +圖像。我正在考慮保留一些呈現的GDI +圖像並將它們放入resx文件中,但計劃通過asp:Labels將它們中的大部分替換爲Tahoma或Arial字體。

你認爲哪一個是更好的本地化圖像解決方案?

  • 嵌入圖像到RESX
  • 只有把圖象的url到RESX
  • 一些其他的解決辦法

我主要關注的是限制UI服務器上的處理。如果是這樣的話,將圖像url添加到resx是一個更好的解決方案,而實際上是將圖像嵌入到resx中?

回答

3

您應該只需要一次生成每個圖像,然後將其保存在硬盤上。您網站上的負載不應增加您必須執行的處理量。這就是說,它幾乎聽起來像你正在使用圖像的東西,你不應該。如果有許多不同的圖像無法跟上它們的生成,現在是時候放棄您不想要的圖像的幻想圖像,然後回到直接的文本。如果用戶沒有安裝指定的字體,則應該回退到類似的字體。 CSS對此有很好的支持。

0

由於緩存,我寧願只添加圖像url到resx中。靜態內容(i-e純文件)比生成的內容更好。

3

看到我的反應here

這可以手動完成或使用某種自動化(CMS)系統。

基本的方法是將圖像緩存在語言特定的目錄結構中,然後編寫一個HTTP處理程序,以有效地刪除其他目錄層。例如:

/images/ 
    /en/ 
     header1.gif 
    /es/ 
     header1.gif 

在您的標記或CSS中,您只需引用/images/header1.gif。 http hander然後使用會話(如果語言是用戶特定的)或配置(如果特定於站點)來選擇從哪個目錄爲圖像提供服務。

這提供了一個簡潔的代碼和內容,允許客戶端緩存。 Resx非常適合小字符串,但我更喜歡像這樣的系統來處理圖像和更大的內容。特別是在網絡上,通常很容易切換圖像。

+0

我能想到的這裏雖然是如果用戶更改語言,他們將不得不清除緩存,查看唯一不同的內容。不一定是個大問題,但需要注意的地方。 – 2008-12-01 15:18:44

1

幾年前我遇到了同樣的問題,我們的接口團隊將我們指向了SIFr。 http://wiki.novemberborn.net/sifr/

您將字體嵌入到Flash影片中,然後使用SIFr JavaScript將文字動態轉換爲字體。因爲它是客戶端的,所以不會有服務器端的影響。

如果用戶沒有安裝Flash或JavaScript,他們將獲得最接近的網頁友好字體。

作爲額外的好處:因爲您的內容仍然是文本 - 谷歌可以搜索和索引內容 - 一個巨大的SEO優化。

+0

我不得不說我在質量和性能方面與SIFR的結果非常混雜。買者自負。 – annakata 2008-12-01 15:22:31

0

我會是非常謹慎地將文字放在圖像中,具有適當字體家族回退的CSS可能是對可訪問性和良好的MVC理由的正確迴應。

凡代真的需要我認爲KibleeJayArr輪廓很好的解決方案