2012-08-08 42 views
1

我正在處理一些批處理例程以管理大型jpg文件庫。我有一個很好的例程,可以快速將4MB +文件縮小到40kb +。使用CCR.Exif,我可以確定是否需要旋轉圖像。我的問題是,我保存之前找不到任何代碼來旋轉圖像。我真的需要能夠做到這一點,而不會產生將圖像帶入屏幕的開銷。什麼是旋轉jpg圖像文件的最快方法?

我使用內置的jpeg.pas;我在Gabriel Corneanu的CodeCentral找到另一個圖書館,但它尚未更新爲DXE2。我所需要做的就是輪換90 °。

任何幫助將不勝感激!

+1

你在使用什麼類的JPG操作? 「jpeg.pas」單元內置的一個?你如何旋轉你的形象?以90°倍數或任意角度自由旋轉? – TLama 2012-08-08 19:51:40

+0

我澄清了細節;讓我知道你是否需要更多信息。感謝您的關注! – skippix 2012-08-08 23:59:45

+1

所以你真正的問題是「如何旋轉JPEG圖像」?並且請不要將標籤信息放在問題標題中; SO有一個很好的標籤系統,它實際上是有效的,而且沒有必要 - 觀看德爾福問題的人會看標籤,而不關心他們的人不會閱讀標籤。 :-) – 2012-08-09 01:06:55

回答

2

在壓縮圖像數據之前,必須先對其進行壓縮。即使它是不可見的畫布,仍然需要將其加載到呈現它們的組件中。然後,您可以使用Windows API調用通過直接訪問畫布來旋轉圖像。我沒有旋轉之前的圖像,但我通過訪問畫布以其他方式操縱它。

GR32和EFG都是具有多種組件和算法的優秀網站。這是EFG網站上旋轉圖像的一個例子。代碼是德爾福3,但它應該仍然適用於圖像處理。

EFG Example with Source

TImage32具有將圖像旋轉90度以及方法。請參閱​​。 TImage32是GR32庫的一部分,並已針對Delphi-XE2進行了更新。

svn co https://graphics32.svn.sourceforge.net/svnroot/graphics32/trunk graphics32 

另見:GR32 Homepage

+0

感謝您指點我的efg頁面!這就是我找到[鏈接](http://www.efg2.com/Lab/ImageProcessing/Unit7.TXT)的地方,它正是我所需要的。 並且我遲疑接受你的回答。最近我有點極度分心。 – skippix 2012-09-03 12:05:32

0

旋轉JPEG圖像是寫爲JPEG解碼器,讀取並解碼左至右JPEG像素的新的/交替像素泵(X,最快的方法, y),並將它們寫入位圖存儲器(y,x) - 也就是說,每個掃描線在同一偏移量處寫入一個像素,而不是在同一掃描線上每列寫入一個像素的正常模式。

其他任何東西都會對位圖數據進行多次傳遞。

+0

感謝您的回覆。聽起來很有趣,但在這一點上我的能力有點過分。 – skippix 2012-09-03 12:09:41

1

如果您需要逐步旋轉JPEG 90度,然後查找無損轉換。 例如irfanview.com有一個特殊的插件DLL,雖然它沒有公共API,但也許你可以問Irfan Author或使用調試器和cff瀏覽器進行反向工程。

很多討論可能只是通過搜索,包括討論它是如何實現的。 https://www.google.ru/search?client=opera&q=lossless+jpeg+rotation

組件目錄有像 http://www.torry.net/quicksearchd.php?String=jpeg+lossless&Title=No

不會與旋轉顆粒小於90個的步驟工作,但由於正交輪流保持searchign無損JPEG轉換。

+0

英特爾用來提供一個成像dll,它有一個偉大的無損jpeg旋轉。 – 2012-08-09 14:43:52

+0

第一個谷歌鏈接討論獨立的JPEG小組,以及它們帶有Delphi接口的DLL(即使已經過時,intf可能很容易用FreePascal的h2pas完成或手動完成,因爲他只需要很少的功能) – 2012-08-09 14:47:52

+0

感謝您的迴應!有一些很好的閱讀。 – skippix 2012-09-03 12:08:56

相關問題