![](/img/trans.png)
[英]Python pillow image.putpixel((x,y),pixel) doesn't change all the pixel
[英]why is Image.putpixel() not considered a good option for changing extensive pixel colors?
Image.putpixel()
的文檔指出:
在給定位置修改像素。 對於單波段圖像,顏色作為單個數值給出,對於多波段圖像,顏色作為元組給出。
請注意,此方法相對較慢。 要進行更廣泛的更改,請改用
paste()
或ImageDraw
模塊。
顯然,文檔指出此方法相對較慢 ,如果圖像中的更改數量很大,則應考慮其他方法。
但是沒有明確的原因,為什么?
我試圖對putpixel()
方法進行源代碼分析,但無法推斷出任何內容。
來源putpixel()
:-
def putpixel(self, xy, value):
if self.readonly:
self._copy()
self.load()
if self.pyaccess:
return self.pyaccess.putpixel(xy, value)
if self.mode == "P" and isinstance(value, (list, tuple)) and len(value) in [3, 4]:
# RGB or RGBA value for a P image
value = self.palette.getcolor(value)
return self.im.putpixel(xy, value)
PS: -我想知道是否Image.getpixel()
相對的方法putpixel()
遭受同樣的缺點嗎? 由於它的文檔中沒有提到。
如果您要六個蘋果,一次去商店購買六個蘋果比一次去商店六次並每次購買一個蘋果要快得多。 設置像素也是如此。
看一下putpixel
方法在做什么:
self.im.putpixel
毫無疑問對坐標做同樣的self.im.putpixel
,並且self.im.putpixel
倍數來找到偏移量 那是許多操作,屬性訪問和方法調用,它們僅需很小的操作。 如果多次調用putpixel
,它將每次重復所有這些操作。
如果您要求它同時做多個像素,則可以跳過下一個像素的步驟1-3,因為它是相同的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.