我對JPEG有一些實驗,the doc表示「100完全禁用了JPEG量化階段」。PIL jpeg,如何保留像素顏色
但是,在保存過程中,我仍然得到了一些像素修改。這裏是我的代碼:
import Image
red = [20,30,40,50,60,70];
img = Image.new("RGB", [1, len(red)], (255,255,255))
pix = img.load()
for x in range(0,len(red)):
pix[0,x] = (red[x],255,255)
img.save('test.jpg',quality=100)
img = Image.open('test.jpg')
pix = img.load()
for x in range(0,len(red)):
print pix[0,x][0],
我得到了意想不到的輸出:22 25 42 45 62 65
我應該怎麼做,以保持像素值?請注意,我也嘗試使用PHP使用imagejpeg,它給了我正確的價值,當質量= 100。
我可以用png
保存,但我想知道這背後的原因,如果有任何選項來避免
確定在PIL中有一個子採樣的選項,我在img.save()上設置subsampling = 0,它給了我正確的20-70。爲所有紅色,綠色,藍色設置相同的值也有時會起到訣竅的作用。 – w00d 2013-03-18 17:14:41
@ w00d,你能給我一個鏈接到有記錄的地方嗎?我找不到它。 – 2013-03-18 17:18:20
我猜這是無證的,我在源代碼中發現它:https://bitbucket.org/effbot/pil-2009-raclette/src/cd403356263f039a4a48a1111c7f5cc38686e481/PIL/JpegImagePlugin.py?at=default#cl-437 – w00d 2013-03-18 17:21:29