Pillow APNG序列

2021-07-09 16:38 更新

PNG 加載程序包括對(duì)讀取和寫(xiě)入動(dòng)畫(huà)便攜式網(wǎng)絡(luò)圖形 (APNG) 文件的有限支持。加載 APNG 文件時(shí),?get_format_mimetype() ?將返回"image/apng"。當(dāng)?n_frames?屬性大于 1時(shí),該?is_animated? 屬性的值將是?TRUE?。對(duì)于 APNG 文件,?n_frames?屬性取決于動(dòng)畫(huà)幀數(shù)以及默認(rèn)圖像的存在與否。有關(guān)詳細(xì)信息,請(qǐng)參閱下面的 ?default_image?屬性文檔。它支持 ?seek()? 和 ?tell()?方法。

?im.seek() ?提出一個(gè) ?EOFError? 如果你試圖尋找最后一幀。

這些 ?info ?在適用的情況下,將為APNG設(shè)置以下屬性:

  • ?default_image? 指定此APNG文件是否包含單獨(dú)的默認(rèn)圖像,該圖像不是實(shí)際APNG動(dòng)畫(huà)的一部分。
    當(dāng)APNG文件包含默認(rèn)圖像時(shí),初始加載的圖像(即 ?seek(0)? )將是默認(rèn)圖像。要說(shuō)明默認(rèn)圖像的存在,則? n_frames? 屬性將設(shè)置為 ?frame_count + 1 ?,其中 ?frame_count ?是實(shí)際的APNG動(dòng)畫(huà)幀計(jì)數(shù)。要加載第一個(gè)APNG動(dòng)畫(huà)幀, ?seek(1)? 必須被調(diào)用。
    True ?-APNG包含默認(rèn)圖像,它不是動(dòng)畫(huà)幀。
    ?False ?-APNG不包含默認(rèn)圖像。這個(gè) n_frames 屬性將設(shè)置為實(shí)際的APNG動(dòng)畫(huà)幀計(jì)數(shù)。最初加載的圖像(即。 seek(0) )將是第一個(gè)APNG動(dòng)畫(huà)幀。
  • ?loop? 循環(huán)此APNG的次數(shù),0表示無(wú)限循環(huán)。
  • ?duration? 顯示此APNG幀的時(shí)間(毫秒)。

 APNG 加載程序返回與 APNG 文件的邏輯屏幕大小相同大小的圖像。在應(yīng)用任何 APNG 幀處理和幀混合操作之后,返回的圖像包含給定幀的像素?cái)?shù)據(jù)(即它包含 Web 瀏覽器將為該幀渲染的內(nèi)容 - 所有先前幀和該幀的合成)。

任何包含序列錯(cuò)誤的 APNG 文件都被視為無(wú)效圖像。APNG 加載程序不會(huì)嘗試修復(fù)和重新排序包含序列錯(cuò)誤的文件。

保存

當(dāng)調(diào)用?save()?時(shí),默認(rèn)情況下只會(huì)保存單幀 PNG 文件。保存APNG文件(包括單幀APNG),save_all 參數(shù)必須設(shè)置為True。還可以設(shè)置以下參數(shù):

  • ?default_image?  布爾值,指定基礎(chǔ)圖像是否為默認(rèn)圖像。如果?True?,則基本圖像將用作默認(rèn)圖像,?append_images?序列中的第一個(gè)圖像將是第一個(gè) APNG 動(dòng)畫(huà)幀。如果?False?,則基礎(chǔ)圖像將用作第一個(gè) APNG 動(dòng)畫(huà)幀。默認(rèn)為?False?。
  • ?append_images?  作為附加幀附加的圖像的列表或元組。列表中的每個(gè)圖像可以是單幀或多幀圖像。每個(gè)幀的大小應(yīng)該與基本圖像的大小相匹配。另外請(qǐng)注意,如果幀的模式與基礎(chǔ)圖像的模式不匹配,則該幀將轉(zhuǎn)換為基本圖像模式。
  • ?loop? 循環(huán)此APNG的整數(shù)次,0表示無(wú)限循環(huán)。默認(rèn)為0。
  • ?duration?  整數(shù)(或整數(shù)的列表或元組)顯示此APNG幀的時(shí)間長(zhǎng)度(毫秒)。默認(rèn)為0。
  • ?disposal?  一個(gè)整數(shù)(或整數(shù)的列表或元組),指定在呈現(xiàn)下一幀之前要用于此幀的APNG處理操作。默認(rèn)為0。
    0 (?APNG_DISPOSE_OP_NONE ?,默認(rèn))-在渲染下一幀之前,不會(huì)對(duì)該幀執(zhí)行任何處理
    1 ?(PIL.PngImagePlugin.APNG_DISPOSE_OP_BACKGROUND? )-在渲染下一幀之前,此幀的修改區(qū)域被清除為完全透明的黑色。
    2 (?APNG_DISPOSE_OP_PREVIOUS? )-在呈現(xiàn)下一幀之前,此幀的修改區(qū)域?qū)⒒謴?fù)為上一幀的內(nèi)容。
  • ?blend? 一個(gè)整數(shù)(或整數(shù)的列表或元組),指定要在呈現(xiàn)下一幀之前用于此幀的APNG混合操作。默認(rèn)為0。
    0 (?APNG_BLEND_OP_SOURCE ?)-此幀的所有顏色分量(包括alpha)覆蓋先前輸出的圖像內(nèi)容。
    1 (?APNG_BLEND_OP_OVER ?)-此幀應(yīng)與以前的輸出圖像內(nèi)容進(jìn)行alpha合成。

這個(gè) ?duration ?, ?disposal ?和 ?blend ?參數(shù)可以設(shè)置為列表或元組,以指定動(dòng)畫(huà)中每個(gè)幀的值。列表或元組的長(zhǎng)度必須與APNG動(dòng)畫(huà)中實(shí)際幀的總數(shù)相同。如果APNG包含默認(rèn)圖像(即。 ?default_image ?設(shè)置為 ?True? ),這些列表或元組參數(shù)不應(yīng)包含默認(rèn)圖像的條目。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)