2011-05-23 143 views
3

我有透明幀動畫圖像gif動畫GIF。 我需要調整它。調整大小使用GraphicsMagick工具

在調整大小之前,我使用Magick::coalesceImages函數,在調整圖像大小後,我使用Magick::writeImages函數將所有的gif幀收集回單一圖像中。

問題是輸出調整大小的圖像文件大小比原來的大,因爲原始動畫gif有透明幀,並且新調整大小的gif沒有任何透明幀。

我已閱讀關於框架優化www.imagemagick.org加上我可以看到www.graphicsmagick.orggifDisposeMethod函數。

我的問題是,我怎麼會導致調整大小的動畫gif圖像使用透明度幀,並避免圖像KBytes大小的增加?

+0

感謝給我修gramer錯誤,但我真的可以使用一個答案... – Oded 2011-05-23 14:57:30

+0

你可能會認爲,如果你調整更大的幀它更大 - 就是在像素寬度/高度的差異,有什麼區別以KB爲單位的文件? – 2011-05-23 17:24:39

+0

以及原始圖像是230X40 10,896Bytes。使用Magick :: coalesceImage並將圖像大小調整爲213X37,然後獲得108,207字節的圖像。 我可以看到,一旦我調整圖像到它92 %% 92%的原始尺寸,在不使用coalesceImage(因爲我使用precentages,每個幀將根據它的原始尺寸來調整大小,所以我想我可以去除coalesceImage使用)我得到一個更小的圖像15,226Bytes,它仍然比原始圖像更大。我真的不明白我是如何得到一個更大的形象 – Oded 2011-05-24 09:10:14

回答

3

好吧,我發現的路要走:

當縮放動畫gif,使用Magick::coalesceImages()是不是最好的辦法...

相反,我按照百分比來調整,而不是絕對大小rezising,同時跳過Magick::coalesceImages()呼叫。

例如,可以說我的原創動畫gif是300×300,我想調整它的大小是150×150,我會做到以下幾點:

  • 讀取圖像中的Magick::Blob
  • 計算百分比數字(在我的演示案例中爲50%x50%)
  • 根據百分比計算調整圖像的每一幀。

這種方式,因爲我們沒有使用Magick::coalesceImages()功能,我們根據其原始大小調整每一幀我們不增加每幀的大小,所以我們沒有任何問題的框架的透明度。

相關問題