2010-03-23 46 views
7

我正在製作一個程序,可以動態創建JPEG圖像的縮略圖。現在我在想:由於JPEG圖像是由8x8像素塊(Wikipedia has a great explanation)構建而成的,因此是否有可能跳過部分解碼?在解碼過程中調整JPEG圖像大小

假設我的縮略圖至少比原始圖像小8倍。然後我們可以通過只包含離散餘弦變換的常數項,將輸入文件中的每個8x8塊映射到解碼輸出中的1個像素。大部分圖像數據可以立即丟棄,無需處理。此外,內存使用量減少了64倍。

我不想從零開始實現這個功能;這將很容易需要一個星期。有沒有代碼可以做到這一點?

如果不是,這是因爲這種方法不值得,或者僅僅因爲沒人想到它呢?

+0

'libjpeg'已經可以做到這一點,您可以在**加載之前通過設置圖像大小**來在ImageMagick中使用此功能。 –

回答

4

我認爲djpeg's scale功能可以做到這一點。

它可以將8x8塊縮放到1和16像素之間的任何大小。

「這很有趣,因爲可以直接從JPEG(DCT)數據中檢索不同的空間大小輸出,而無需單獨完整解碼和空間重採樣。」

+0

正是我在找的東西,它也在一個適當授權的主流圖書館裏。謝謝! – Thomas

0

我正在使用的項目目前使用ImageGen,它可以動態調整各種圖像大小 - 如果功能列表匹配您想要的功能,這可能會付出代價。否則,我想你正在尋找在圖像上實現有損文件壓縮,其中必須已經完成!

2

根據this answer,EPEG來自Enlightenment所做的正是這一點,通過收集DCT係數將圖像縮小8倍。這裏是current home of EPEG

+1

我希望我能接受兩個答案,但唉,只能有一個。儘管如此。 – Thomas