一切皆可抽象

          大而無形 庖丁解牛 厚積薄發(fā) 滌慮玄覽
             ::  ::  ::  ::  :: 管理

          【原創(chuàng)】svg IDE的開發(fā)思路

          Posted on 2005-10-04 17:27 鋒出磨礪 閱讀(1799) 評論(2)  編輯  收藏 所屬分類: java算法 、消息中間件 、web服務(wù)aop 、雜談

          svg背景

          svg描述

          什么是SVG

          SVG,是可任意放縮矢量圖像格式(Scalable Vector Graphics)的簡稱。它基于XML(可擴(kuò)展標(biāo)識語言),是一個全新的標(biāo)準(zhǔn)開放的矢量圖像和動畫格式。SVG不同于傳統(tǒng)的二元(平面)圖像和動畫制作,它使用簡單的一元(文本)語句,完成矢量圖像,以及諸如色彩變化,對象運動,濾鏡和遮照,音效添加等各式動畫效果。SVG創(chuàng)造一個利用純文本完成網(wǎng)絡(luò)多媒體的神話。

          SVG的特點

              矢量圖像

            圖像通常分為矢量圖像和位圖圖像。
            矢量圖像利用點和線等矢量化的數(shù)據(jù)描述圖像,并在圖形中包含色彩和位置信息。矢量圖像的最大優(yōu)點是"分辨率獨立"。當(dāng)顯示或輸出圖像時,圖像的品質(zhì)不受設(shè)備的分辨率影響,能夠提供高清晰的畫面。矢量圖相對位圖而言,更適合用于直接打印、印刷或輸出到一些小型設(shè)備如手提裝置上。放大和縮小矢量圖不會影響圖像品質(zhì)。
          而位圖圖像則使用我們稱為像素的一格一格的小點來描述圖像。計算機(jī)的屏幕其實就是一張包含大量像素點的網(wǎng)格。位圖圖像受到分辨率的影響。因此常常出現(xiàn)圖像邊緣鋸齒和放大后"馬賽克"現(xiàn)象。相對而言,位圖需要的存儲空間要比矢量圖更多。
            SVG作為矢量圖像格式,同樣具備了矢量圖的諸多優(yōu)點,更適合在網(wǎng)絡(luò)中傳輸和應(yīng)用。SVG除了矢量圖的優(yōu)勢,也同樣保持了對位圖圖像的正確表達(dá)功能。使用XML中的XLINK(擴(kuò)展鏈接)標(biāo)簽,SVG也可以在圖像中調(diào)用位圖圖像。

            矢量濾鏡

            雖然SVG圖像做為矢量圖格式,具有很多優(yōu)點。但我們也看到,仍然有很多的圖像設(shè)計師傾向于使用位圖創(chuàng)作。這是因為位圖常??梢允褂么罅康臑V鏡效果、紋理貼圖和空間幻影等,加強(qiáng)圖像的視覺效果。
          但因為位圖的創(chuàng)作是直接針對像素操作,所以,一旦完成效果的添加,設(shè)計師幾乎無法再進(jìn)行修改。例如,輸出一幅霧化效果的位圖圖像,您已經(jīng)無法再恢復(fù)原來清晰的圖像。

            而如果使用SVG支持的矢量濾鏡,設(shè)計師同樣可以創(chuàng)作出大量流行的和普遍的濾鏡效果。并且,這樣的濾鏡效果是可調(diào)整的。因為SVG的矢量濾鏡并不直接針對像素進(jìn)行操作,而是作為某一個對象的獨立屬性保存在文件中。修改圖像效果只需要重新調(diào)整這些屬性,就可以完成對濾鏡的修改、替換和刪除,非常的便捷。SVG的矢量濾鏡對于遠(yuǎn)程協(xié)作和二次編輯,提供了極大的自由度。

            關(guān)于濾鏡的實例,請參看<<SVG中文教程>>。

            基于
          XML

            SVG的語法和結(jié)構(gòu)基于XML(可擴(kuò)展標(biāo)識語言)。XML是下一代的網(wǎng)絡(luò)開發(fā)語言,它提供的功能遠(yuǎn)遠(yuǎn)超過了目前使用的HTML(超文本鏈接語言)。當(dāng)一個網(wǎng)站變得越來越復(fù)雜的同時,為了獲得更好的管理和交互,網(wǎng)站開發(fā)者同樣需要一個比HTML更優(yōu)秀的網(wǎng)絡(luò)開發(fā)語言和工具。這就是XML

            與HTML不同,XML完全分離了網(wǎng)站內(nèi)容和網(wǎng)站構(gòu)架。通過定義結(jié)構(gòu)數(shù)據(jù)類型,用戶端應(yīng)用程序能夠顯示和處理,而不僅僅像HTML那樣僅僅能顯示,網(wǎng)頁或數(shù)據(jù)。例如,一個利用XML標(biāo)簽定義的電話號碼,可以根據(jù)需要,由瀏覽器進(jìn)行撥號。XML所具有優(yōu)秀的擴(kuò)展性,使得它在網(wǎng)絡(luò)工業(yè)應(yīng)用上,比HTML有著更大的空間和前景。
          SVG
          的開發(fā)和創(chuàng)作是基于XML的,因此,我們也能在SVG中開發(fā)出更多新的功能以提供更多的網(wǎng)絡(luò)服務(wù)。例如,制作智能化的數(shù)據(jù)圖像。圖像中的數(shù)據(jù)可以根據(jù)需要,由應(yīng)用程序讀取、修改和統(tǒng)計并最終在圖像中顯示。這些應(yīng)用是目前HTML及相關(guān)圖像技術(shù)遠(yuǎn)不可及的。

            文本格式

            SVG文件是一元(文本)格式的。SVG圖像和動畫具有了以下文本格式所具備的特點:
            1、作為基于文本的格式,SVG圖像中的文字也是文本格式。這不同于現(xiàn)在圖像和動畫中的文字。目前圖像和動畫中的文字實質(zhì)上都是圖像。因此,SVG中的文字可以被網(wǎng)絡(luò)搜索引擎做為關(guān)鍵詞搜尋。利用這一性質(zhì),通過SVG中定義的文字,就可以制作出非常高效的圖像搜索引擎。圖像中的文字也可以被用戶瀏覽器查找。
            2SVG圖像可以方便的由程序語言來動態(tài)的生成。例如使用JavaScript,perl,Java等語言,開發(fā)自動圖像和動畫生成系統(tǒng)。這對于一些數(shù)據(jù)庫制表是非常實用的。在線圖像還可以根據(jù)后臺數(shù)據(jù)庫中的關(guān)系量實時的進(jìn)行動態(tài)改變。
            3SVG完全支持DOM(文檔物件模型)。因而SVG以及SVG中的對象可以通過腳本語言接受外部事件的驅(qū)動,例如鼠標(biāo)動作、鍵盤動作等,實現(xiàn)對自身或?qū)ζ渌锛?、圖像的控制,制作交互式的圖像和動畫。

            4、因為是文本格式,SVG可以很好的跨平臺工作,同時,還可以解決相關(guān)的外部輸出、色彩模式、網(wǎng)絡(luò)帶寬等問題。

            簡言之,文本格式使得SVG獲得了與其它技術(shù)標(biāo)準(zhǔn)更大的交互和融合的特點。


            與GIF,JPEG比較

            GIFJPEG都是目前網(wǎng)絡(luò)普遍使用的位圖格式。SVGGIFJPEG有很多獨特的優(yōu)勢:
            1、具有很高的圖像品質(zhì)。因為是矢量圖像,分辨率獨立,用戶可以自由的放縮圖像而不會破壞圖像的清晰度。這對于查看某些圖像細(xì)節(jié)例如數(shù)據(jù)圖像中的數(shù)字,非常的有用。
            2、圖像中的文字獨立。如上一小節(jié)所述,SVG圖像中的文字獨立于圖像,可以進(jìn)行文本編輯和查詢。
            3、較小文件尺寸。因為基于矢量格式,由語句完成圖像的保存,SVG圖像相比較GIFJPEG具有更小的文件大小,下載更加迅速。
            4、色彩適應(yīng)性更強(qiáng)。SVG圖像具有一個1600萬色彩的調(diào)色板,支持ICC(國際色彩協(xié)會)色彩標(biāo)準(zhǔn),支持RGB色彩模式。

            5、可交互性。SVG基于XML,因而能輕易的制作強(qiáng)大的動態(tài)交互。SVG圖像能對用戶動作做出不同響應(yīng),例如高亮,聲效,特效,動畫等,體現(xiàn)了網(wǎng)絡(luò)互動的本質(zhì)。而GIFJPEG都不可以產(chǎn)生交互。


            與SWF比較

            SWF文件格式是Flash的輸出文件格式。從某種意義上,SWFSVG有很多驚人的相似之處。但是,盡管Flash憑借其優(yōu)越的表現(xiàn)形式和便利的創(chuàng)作工具成為目前網(wǎng)絡(luò)動畫設(shè)計的首選,SWF日益在網(wǎng)絡(luò)中普及,但我們也應(yīng)該看到,與SVG相比較,SWF存在著以下的不足:
            1、SWF是一個非開放標(biāo)準(zhǔn)。這就意味著該技術(shù)掌握在個體手中,技術(shù)的發(fā)展受到方方面面的限制。同時,SWF與其他的開放標(biāo)準(zhǔn)也沒有完整的融合方案。盡管SWF目前已經(jīng)提供了對XML的支持,但這種支持是單方面的。隨著XML及其他開放標(biāo)準(zhǔn)的發(fā)展,SWF的不協(xié)調(diào)性將日益顯著。
            2、SWF的可編輯性不如SVGSWF做為最終的動畫生成格式,其創(chuàng)作過程封裝在SWF文件中,幾乎無法再進(jìn)行二次編輯。同時,SWF也不提供對文本格式的支持,因此,無法獲得類似SVG的查詢圖像中文字的功能。

           

          svg工具分析

          SVG創(chuàng)作工具

              目前的SVG創(chuàng)作工具還處于開發(fā)和研制階段,仍然沒有一款非常成熟的包含靜態(tài),動態(tài),交互功能創(chuàng)作的軟件.這里介紹幾個目前可以進(jìn)行一些研究和測試的SVG創(chuàng)作軟件.

            Adobe Illustator

            AdobeSVG的開發(fā)中扮演了重要角色.Adobe Illustrator 9.0是較早的一款結(jié)合SVG功能的矢量創(chuàng)作軟件.目前可以進(jìn)行靜態(tài)圖形的創(chuàng)作和部分交互功能的實現(xiàn).其交互功能需要手寫javascript腳本.

            創(chuàng)作AI圖像后,選擇File->Export(文件->輸出),選擇文件類型SVG,SVG Option面板中設(shè)置相關(guān)屬性,可以輸出SVG文件,關(guān)于屬性設(shè)置,請參看<<SVG中文教程>>.

            Web Draw

              WebDrawJasc Software按照W3C組織制定的SVG規(guī)范書開發(fā)的矢量圖像和動畫制作工具,專業(yè)應(yīng)用于SVG創(chuàng)作.WebDraw通過直接畫布拖拽繪圖以及濾鏡效果模塊化組合,可以避免手寫源代碼.同時提供源代碼視圖窗口,支持后續(xù)源代碼編輯和修改.
            軟件的整體布局類似于目前許多的圖形創(chuàng)作軟件.與職業(yè)的矢量創(chuàng)作軟件Adobe IllustratorCorel Draw相比較,Web Draw在功能上還不足以抗衡,但作為專業(yè)開發(fā)SVG的創(chuàng)作工具,也許可以預(yù)想,經(jīng)過一段時間的積累,它將成為下一個成功的Fireworks.(Fireworks成功的開發(fā)了PNG格式
          .)
            最新版本是Preview Release 4.目前還不支持動態(tài)SVG效果.另外, 應(yīng)用濾鏡效果并不能在畫布真實表達(dá)輸出后的SVG圖像
          .
            下載
          (4.45M):
            http://www.jasc.com/webdraw.asp (國外
          )
            http://www.2svg.com/ (國內(nèi))


          Web Engine

          IMS Web Engine (Interactive Multimedia System)Virtural Mechanics開發(fā)的一款網(wǎng)頁創(chuàng)作軟件,主要應(yīng)用于創(chuàng)作靜態(tài)和動態(tài)的HTML,DHTMLSVG頁面.Web Engine是目前極少數(shù)不需要通過手寫代碼即可完成SVG動態(tài)交互創(chuàng)作的工具.它的精靈向?qū)Э梢院芸斓亩x簡單的交互動作.
            Web Engine的界面比較粗曠,或者說不是很精細(xì),很多操作是雙擊對象彈出面板,調(diào)整選項,這有點像當(dāng)時的Flash3.04.0.Web Engine有一個比較不足的地方,給設(shè)計者帶來很大的限制,就是沒有提供源代碼視圖,無法直接進(jìn)行源代碼的修改和編輯
          .
            目前的版本是
          Version 2 Beta.
            下載
          (3.86M):
            http://www.virtualmechanics.com/(國外
          )
            http://www.2svg.com/ (國內(nèi))

           

          市場分析

          SVG的應(yīng)用價值

              網(wǎng)絡(luò)發(fā)展的需要,與其他開放標(biāo)準(zhǔn)兼容

            如同PNG作為W3C的位圖圖像工業(yè)標(biāo)準(zhǔn),SVG是網(wǎng)絡(luò)中解決矢量圖像的工業(yè)標(biāo)準(zhǔn).SVG以前,除了Macromedia開發(fā)了SWF作為矢量的網(wǎng)絡(luò)文件格式,還沒有其他的矢量文件在網(wǎng)絡(luò)中應(yīng)用.因為位圖文件受到本身的很多局限,在圖形印刷和傳輸中,矢量文件有很大的應(yīng)用價值,所以,必定會有相應(yīng)的矢量標(biāo)準(zhǔn)得到開發(fā)和應(yīng)用,這就是SVG.
            作為W3C的推薦格式,SVG與現(xiàn)有的其他開放標(biāo)準(zhǔn)有很好的兼容性.這些標(biāo)準(zhǔn)包括DOM1,DOM2CSS,XML,XPointer,XSLTXSL,SMIL,HTMLXHTML.SVG與其他組織的標(biāo)準(zhǔn)化技術(shù)也能很好的協(xié)調(diào)一致,如ICC,URI,UNICODE,sRGBECMAScript/JavaScript,
          Java.
            使用SVG并不意味著我們將從此放棄現(xiàn)在的網(wǎng)絡(luò)圖像技術(shù)如GIF,JPEGSWF.相比較這些目前有普遍應(yīng)用的文件格式,SVG更適合網(wǎng)絡(luò)發(fā)展的需求,開發(fā)和應(yīng)用SVG意味著獲得一個更優(yōu)秀的工具和方法
          .

            數(shù)據(jù)表格,圖像地圖


            在應(yīng)用領(lǐng)域,SVG可以非常適宜的應(yīng)用在數(shù)據(jù)表格和圖像地圖中.SVG的源文件中,通過變量可以很方便的控制需要的圖形生成.這就為網(wǎng)絡(luò)圖像數(shù)據(jù)表格提供了很大的應(yīng)用前景.一個簡單的例子,現(xiàn)有的asp可以方便的構(gòu)建動態(tài)數(shù)據(jù)網(wǎng)頁,利用SVG,則可以同樣方便的繪制動態(tài)數(shù)據(jù)圖像,例如數(shù)據(jù)分析中的柱狀圖和餅狀圖.
            制作圖像地圖同樣是SVG的一大優(yōu)勢.由于SVG是矢量格式,圖像可以在任何顯示分辨率下獲得同樣的圖像效果,文件放大觀看時也不會有任何的品質(zhì)損失,因而可以完全可以制作這樣的圖像地圖,其中包含了一個城市所有的地理信息,文件可以根據(jù)觀看這不同的需要,對不同的地區(qū)進(jìn)行放大顯示,同時,每一個地理名詞又可以獨立的包含一段文字說明,或者包含相應(yīng)的地理數(shù)據(jù),但用戶需要時,可以通過點擊地理名詞獲得解釋說明.這樣的圖像地圖文件的文件大小也僅僅是K字節(jié)級別
          .

            無線設(shè)備的需求


            SVG另一個非常誘人的應(yīng)用前景就是開發(fā)無線設(shè)備的圖形和動畫.例如目前使用的手機(jī)產(chǎn)品,其圖像主要是WBMP.這種格式因為是位圖文件,受到傳輸大小的限制,同時不提供彩色的色彩模式,所以顯得很呆板.而如果利用SVG,只要在無線設(shè)備中安裝一個文本解析器,就可以實現(xiàn)對SVG文件的識別和顯示,同時,因為是矢量的文本文件,文件的尺寸不會很大,非常適合無線產(chǎn)品的網(wǎng)絡(luò)傳輸.SVG還提供動畫和多媒體編輯功能,所以可以支持二維的平面動畫,支持聲音文件和視頻文件的播放.結(jié)合一些其他的技術(shù),例如SMIL(多媒體同步整合語言),就可以實現(xiàn)創(chuàng)建一個非常理想的多媒體無線終端解決方案.


            圖像搜索引擎


            不同于現(xiàn)在的二維圖像,SVG是一個可實現(xiàn)交互和查詢的文件格式.SVG圖像中,信息是一元代碼形式的,是開放形式的.文字獨立于圖形信息.這就為圖像搜索和查詢提供了可能.例如,在一個SVG動畫中,通過搜索某一個關(guān)鍵字,就可以在圖像中查詢到對應(yīng)的信息.而這對于同樣是矢量圖像和動畫格式的SWF就不可能實現(xiàn).依據(jù)SVG的這種交互性,可以創(chuàng)建大型的圖像搜索引擎.

            網(wǎng)頁設(shè)計思想的改變


            采用SVG進(jìn)行網(wǎng)頁設(shè)計,是下一代的網(wǎng)頁設(shè)計思想.現(xiàn)在的網(wǎng)頁設(shè)計,通常是在位圖圖像軟件中繪制好整體頁面圖像,然后進(jìn)行圖像切割,最后完成頁面的文字編輯.通常這樣的工作是很繁瑣的,進(jìn)行二次修改也很不簡便.而利用SVG,則可以實現(xiàn)頁面圖形設(shè)計和文字編輯的一步完成.如果要進(jìn)行遠(yuǎn)程協(xié)作完成網(wǎng)頁設(shè)計,也只需要傳輸創(chuàng)作后的頁面文件,而不必將所有的圖像源文件和頁面文件都傳輸.
            因為SVG能夠很好的與HTMLXML兼容,所以,下一代的網(wǎng)頁編輯軟件將開始結(jié)合圖像創(chuàng)作功能.許多現(xiàn)在需要通過外部圖像或動畫軟件創(chuàng)作的效果,將可以直接在網(wǎng)頁編輯軟件中完成
          .
            結(jié)合SVG創(chuàng)作網(wǎng)頁,將使網(wǎng)頁設(shè)計師真正可以""出頁面
          .

             另外,有一些專業(yè)的計算機(jī)軟件公司開發(fā)基于web的圖形化軟件,看到了svg的優(yōu)勢和前景。但是苦于沒有一個好的創(chuàng)作工具而放棄。這是一個大的市場,筆者一直想開發(fā)一個用于軟件公司的產(chǎn)品。

             這個工具一旦誕生,將是世界首家。市場非常廣闊。

          總體目標(biāo)

          產(chǎn)品目標(biāo)定義

          產(chǎn)品的目標(biāo)除了吸收目前市場上產(chǎn)品的優(yōu)點

          可以用簡單的圖元進(jìn)行靜態(tài)svg的設(shè)計創(chuàng)建,同步源碼和展現(xiàn)預(yù)覽以外

          增加新的目標(biāo)是。

          1,  java開發(fā),跨平臺

          2,  工具可以和數(shù)據(jù)庫交互

          3,  可以定義事件

          4,  增加組件庫

          5,  提供api供其它java軟件項目調(diào)用

          市場目標(biāo)定位

          第一步:面向?qū)I(yè)的計算機(jī)公司

          第二步:面向廣告公司及更大的客戶群

          產(chǎn)品范圍

          組件設(shè)計工具

          可以通過簡單的圖元和已有組件進(jìn)行新的組件設(shè)計,但不涉及事件定義,只是簡單的靜態(tài)圖形文件的創(chuàng)建。

          總體設(shè)計工具

          可以通過簡單的圖元和已有組件進(jìn)行總體圖形的設(shè)計??梢赃M(jìn)行事件腳本設(shè)計,可以和后臺數(shù)據(jù)庫關(guān)聯(lián)。圖形屬性更加豐富。

          java解析展現(xiàn)工具

          可以在java appJpanel上解析展現(xiàn)svg文件。


          評論

          # re: 【原創(chuàng)】svg IDE的開發(fā)思路[未登錄]  回復(fù)  更多評論   

          2009-04-10 14:58 by aaa
          能不能介紹一個svg怎樣在js中使用?。?/div>

          # re: 【原創(chuàng)】svg IDE的開發(fā)思路  回復(fù)  更多評論   

          2009-07-29 10:36 by kingweaver
          SVGDeveloper基本上實現(xiàn)了你說的功能. www.perfectsvg.com可以下載。
          主站蜘蛛池模板: 溧阳市| 富蕴县| 平果县| 翼城县| 伊通| 武强县| 海淀区| 咸宁市| 揭西县| 黑龙江省| 德江县| 临漳县| 嵩明县| 定州市| 榆社县| 鄂尔多斯市| 南康市| 高雄县| 洪泽县| 阿拉善右旗| 南漳县| 株洲市| 镇远县| 封开县| 墨玉县| 延长县| 灵山县| 清远市| 泗洪县| 墨竹工卡县| 息烽县| 乌兰察布市| 和硕县| 武宣县| 丰镇市| 南岸区| 温宿县| 瑞安市| 吉安县| 嘉祥县| 泸溪县|