edit rgb values in a jpg with python

不打扰是莪最后的温柔 提交于 2019-12-07 02:30:21

问题


I am trying to change the RGB values in a photo with the Python Imaging Library. I have been using the function Image.point and it does what I want except I want to be able to implement a different function on the R the G and the B values. Anyone know how I can do this?

Thanks!


回答1:


You're better off using numpy in addition to PIL for doing math of the individual bands of an image.

As a contrived example that is not meant to look good in any way:

import Image
import numpy as np

im = Image.open('snapshot.jpg')

# In this case, it's a 3-band (red, green, blue) image
# so we'll unpack the bands into 3 separate 2D arrays.
r, g, b = np.array(im).T

# Let's make an alpha (transparency) band based on where blue is < 100
a = np.zeros_like(b)
a[b < 100] = 255

# Random math... This isn't meant to look good...
# Keep in mind that these are unsigned 8-bit integers, and will overflow.
# You may want to convert to floats for some calculations.
r = (b + g) * 5

# Put things back together and save the result...
im = Image.fromarray(np.dstack([item.T for item in (r,g,b,a)]))

im.save('output.png')

Input


Output



来源:https://stackoverflow.com/questions/10825217/edit-rgb-values-in-a-jpg-with-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!