歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

使用libjpeg對圖像進行壓縮

libjpeg 是一個完全用C語言編寫的庫,包含了被廣泛使用的JPEG解碼、JPEG編碼和其他的JPEG功能的實現。Libjpeg不僅可以把bmp格式轉化成jpg格式,還支持其他格式的轉化成jpg格式(例如ppm,gif,targa,rle等)。

 轉化流程如下:

(1) 分配和初始化一個JPEG壓縮對象

在libjpeg中,JPEG壓縮對象被定義為“struct  jpeg_compress_struct”(這個結構體內部有一些子結構體,這些子結構體時通過“malloc”來分配空間的,我們的程序不會直接使用這些結構體)。

我們還需要定於錯誤處理器。這裡我們僅使用默認的錯誤處理器,默認的錯誤處理器會把警告/錯誤信息輸出到stderr,如果出現致命錯誤,將會調用exit()退出程序。

綁定錯誤處理器的代碼如下:

      struct jpeg_compress_struct cinfo;

      struct jpeg_error_mgr jerr;

      ...

      cinfo.err = jpeg_std_error(&jerr);

      jpeg_create_compress(&cinfo);

jpeg_create_compress會分配一小段內存,如果我們機器內存過少則會分配失敗。在這種情況下error handler會處理錯誤並退出程序。這就是為什麼error handler為什麼需要首先進行初始化的原因。

Copyright © Linux教程網 All Rights Reserved