跳到主要內容

發表文章

目前顯示的是有「檔案格式」標籤的文章


Python-開啟檔案-png

Python 開啟檔案 pypng 安裝: linux、mac :pip3 install pypng windows    :之後補上 程式碼說明 寫入 import png f = open('ramp.png', 'wb') w = png.Writer(255, 5, greyscale=True) w.write(f, [range(256) , range(256) ,range(256) ,range(256) ,range(256) ]) f.close() 讀取 import png import urllib r=png.Reader(file=urllib.request.urlopen('http://www.schaik.com/pngsuite/basn0g02.png')) r.read()

檔案格式-影片

檔案格式 影片 影片檔跟圖片一樣,有分成無損影片跟有損影片,常見的檔案類型有mp4、avi等,影片檔其實概念就是由音源檔加上連續的圖檔,所以有無壓縮要看該檔案類型的使用的影像壓縮技術跟音源壓縮技術的種類,所以無法簡單說哪種檔案是有無壓縮。 avi avi檔的詳細內容請參考 維基百科 ,副檔名為avi。 mp4 mp4檔的詳細內容請參考 維基百科 ,副檔名為mp4。 看到這邊會發現實在不太可能把所有用到的檔案格式都去了解,只能對要用到的去做概略的理解,如果要對演算法進一步去研究,才有必要詳細地去理解流行的檔案格式,所以目的做為導向去學東西比較快,所有的內容都是針對概念、現有的種類、程式碼怎樣處理去寫的,這樣遇到新的問題的時候,就能夠順利解決。  投影片-slideshare:程式語言概念_變數  影片-youtube:程式語言蓋面_變數  程式碼-Github:程式語言概念_變數 下一單元:程式語言概念_ 常見的資料格式

檔案格式-音源

檔案格式 音源 音源檔是用來儲存聲音的,跟圖片一樣也分成有損音源跟無損音源,無損檔如:wav,有損檔如:mp3、ACC,而音訊檔在儲存時都會進行壓縮,以節省記憶體,其他還有很多檔案類型在這邊不一一討論。 無損檔是能將電腦在錄製時的音訊內容,完整的儲存下來,所以無損的檔案也較大。 有損檔是基於人類心理學的原理,把人類感受不到的音訊部分刪除,留下人類能夠聽到的內容,相對無損的檔案較小。 wav wav檔是能在windows、linux、mac上流通的檔案,wav在 維基百科 上的資訊可以到連結中去看,是無損檔,副檔名為wav。 mp3 mp3是常見的音源檔,mp3在 維基百科 上的資訊可以到連接中去看,是有損檔,副檔名為mp3。 ACC ACC是mp3下一代的音源檔,ACC在 維基百科 上的資訊可以到連接中去看,是有損檔,副檔名為acc、mp4、m4a。 思考有損音訊、無損音訊轉換 無損轉無損,基本沒有什麼太大問題,只要確定兩個無損的程度是一樣的,這樣紀錄的內容就會是相通。 無損轉有損會將有損物法儲存的內容拿掉,留下有損能夠儲存的部分。 有損轉有損,就如同無損轉無損的狀態一樣,若兩者一樣則沒有差別,若是有損程度高的轉有損程度低的,那就會已有損程度高的方式記錄下來。 有損轉無損,記錄下來的當然是有損的的內容。  投影片-slideshare:程式語言概念_變數  影片-youtube:程式語言蓋面_變數  程式碼-Github:程式語言概念_變數 下一單元:程式語言概念_ 常見的資料格式

檔案格式-圖片

檔案格式 圖片 圖片檔案類型大致分成兩種,一為點陣類型,如:jpg,二為向量類型,如:svg、png,用於儲存圖片,點陣會有壓縮失真的問題,向量型不會有。 點陣圖 點陣是以像素(Pixel)為基礎所組成的,用點的方式來紀錄圖形中所有使用到的顏色碼,一般色碼通常是使用RPG的形式,數值代表該顏色強度從0到255,每個pixel都有RPG三種顏色,RPG都有0到255的值,在看該圖片的pixel是多少,由這些pixel組成整張影像,pixel越多產生檔案越大,點陣圖能呈現影像原貌及色彩上的細微差異,具有色彩豐富、內容逼真的優點,廣泛應用在各種圖片,例如數位相機拍攝的相片;但是,將點陣圖放大後會產生鋸齒邊緣,影像會變模糊。  向量圖 向量圖是以數學運算為基礎,每個物件都為單獨的個體,都是用數學式表達,並保有顏色、形狀、輪廓、大小和位置等屬性,放大或縮小後,點跟點的距離會以數學方式重新計算,所以清晰度不會改變,不會產生鋸齒狀,產生的圖片檔案比較小;由於它的畫面色彩比較單調,因此無法製作高品質的影像作品。 jpeg 這是 jpeg 的官網,上面有詳細的介紹,如果要研究jpeg的演算法可以上該網站去看看,有需多資料內容,jpeg主要是用點陣型式儲存圖片,副檔名為jpg,數位相機會用這種格式儲存 。 svg   這是 svg 的官網,上面有詳細的介紹,如果要研究svg的細節可以上該網站去看看,有需多資料內容,svg主要是用向量型式儲存圖片,副檔名為svg,為w3c主推的圖檔格式,w3c主要訂定網頁相關的議題的組織。 png 這是png的規範 RCF2038 ,上面有詳細的介紹,如果要研究svg的細節可以上去看看,有需多資料內容,png主要是用向量型式儲存圖片,副檔名為png,是舊時網路傳輸圖片主流之一,現在也還是有人使用。 圖檔相互轉換 在前述的向量圖點陣圖,可以知道這是儲存圖片的主流兩種形式,而點陣圖轉點陣圖跟向量圖轉向量圖,可以從概念上推知是可以相互轉換的,只是用高解析度、高色彩的儲存格式轉成低解析度、低色彩的圖片時,會有失真的問題,所以同類型的轉換時沒有問題的,再來觀察向量圖轉點陣圖,因為像樣圖是由數學式構成,構成之後轉換乘圖片,該圖片顯示在螢幕上,仍是用pixel組成,所以可以推知向...

檔案格式-html

檔案格式 html html詳細定義在 RFC1866 上,有需要可以上去該網站上看,如果有空我會進行翻譯,但html基本上就是網頁傳輸檔案,它是xml的延伸,是一種標籤語言,以下是範例。 <doctype html> <html> <head>    <title></title> </head> <body>     <h1>Title 1</h1> </body> </html> 首先第一行宣告該檔案為一個html5的檔案,第二行html檔案內容開始,對應最後一行為結束 ,head定義一些網站資訊的事項,title定義網站標題,body定義網站內容,h1為標題1,html只定義了內容,為定義排版。  投影片-slideshare:程式語言概念_變數  影片-youtube:程式語言蓋面_變數  程式碼-Github:程式語言概念_變數 下一單元:程式語言概念_ 常見的資料格式

檔案格式-xml

檔案格式 xml xml詳細內容參考 RFC7303 ,詳細的定義在那裡面,如果有空我會翻譯成中文。 xml又稱可擴展標籤是語言,顧名思義它有標籤,並且可以擴展標籤定義,也就是可以自己定義標編意義,以下是基本的標籤構成: <tag></tag> <tag/> 第一種是標籤開始、標籤結束,第二種是標籤內結尾的形式,另外可以增加標籤的屬性,而在xml開頭需要聲明其xml版本,第一種情形兩個標籤之間的內容可以稱為元素。 <?xml version="1.0"?> 2 <小纸条 id="1"> 3   <收件人> 大元 </收件人> 4   <發件人> 小張 </發件人> 5   <主題> 問候 </主題> 6   <具體內容> 早啊,飯吃了沒? <newline/></具體內容> 7 </小纸条> 在實際上的應用來看,像是word、pdf、html、json等都是應用的例子,簡單說要自定義資料格式、檔案內容、檔案排版,可以使用xml,不過不建議發展新的格式,除非有什麼特別的理由。 在這邊要特別提一下,parser這個東西,這個東西的概念就是去解開xml的檔案,讓資料用xml定義的格式讀到程式中,主流方法有兩種分別為DOM Parser、SAX Parser。 DOM Parser的做法是將整個檔案的結構跟內容一次讀進程式中,比較花時間跟空間,對於檔案較大或是硬體設備不夠強的情況,不適合。 SAX Parser的做法是讀取部分的內容,不一次做到,這種方法是由JAVA提出實作,原因在於android手機上在讀取這種內容的時候,可能會不夠資源或是很慢,故發展出此種方法。  投影片-slideshare:程式語言概念_變數  影片-youtube:程式語言蓋面_變數  程式碼-Github:程式語言概念_變數 下一單元:程式語言概念_ 常見的資料格式

檔案格式-json

檔案格式 json 詳細內容 RFC4627 ,該網站有詳細的定義,如果有空或許我會翻譯該文件,由以下基本格式組成。 {name1:value1,name2:value2} [value1,value2] 以上為基本組成形式,用大括號包住,用冒號來分隔名稱跟值,中括號可是用來儲存多個值,值可以是數字、字串、布林值,以下為一個json格式的儲存範例。 {    "name":"myName",    "height":163,    "IsBoy":True,    "buying":["book","car","flower"]    "address":     {         "number":"234",          "street":"street",          "town":"A",          "city":"cityB",          "country":"CountryC"     } } 一開始用大括號定義出json檔,接下來定義name、height、IsBoy、buying、address,name存名字(字串),height存身高(數字),IsBoy存布林函數,buying存字串清單,address存地址(地址各個部分定義,用大括號存),以上範例可以說是各種使用可能都已經考慮,以此為範本進行推演。 應用在網站資料處理、資料傳輸、NoSQL上,都很常見。  投影片-slideshare:程式語言概念_變數  影片-youtube:程式語言蓋面_變數  程式碼-Github:程式語言概念_變數 下一單元:程式語言概念_ 常見的資料格式

檔案格式-csv

檔案格式 csv 在rfc4180有詳細的定義跟說明,如果想要了解其定義可以去該網站閱讀, 傳送門 ,如果有天有空或許會翻譯翻譯吧,不過下面講下幾本的定義,以及可能會遇到形式變種。 最標準的定義如下 aaa,bbb,ccc crlf ddd,eee,ffff crlf ggg,hhh,iii crlf 觀察上面的格式,會發現重複的字母中間會有用逗號隔開,這是csv檔案很標準的做法,以這樣的方式來隔開資料內容,而crlf是什麼呢?其實就是所謂的\r\n,\r是回車,就是enter,然後常會搭配\n一起使用,這似乎跟打字機的構造有關,換句話說 cr等於\r、lf等於\n,而兩個通常會一起出現所以就會變成crlf,而在windows系統上,必定是crlf一起出現,而linux上,通常都用lf而已,所以csv檔間單定義就是用逗號分開資料且用crlf分行的檔案,之後crlf就一定寫成\r\n,lf就一定寫成\n。 但是在實際狀況上,可能會看到不標準的格式,如只有\n的格式或是資料是用\t(tab鍵)、空白鍵分開的,這也是很常見的形式,另外如果換行的時候有所錯誤,也是需要修正的。 不過大多的csv都是由excel這類型的程式所生成的,只要是這類型的程式生成的,格式基本上就是會固定,但就怕有人用手動生成。  投影片-slideshare:程式語言概念_變數  影片-youtube:程式語言蓋面_變數  程式碼-Github:程式語言概念_變數 下一單元:程式語言概念_ 常見的檔案格式