2016-10-04 9 views
0

에 투명 그라디언트를 추가,이 시도 :파이썬 베개 : 나는 아래의 이미지처럼 이미지에 투명 그라디언트를 추가 할 필요가 이미지

def test(path): 
    im = Image.open(path) 
    if im.mode != 'RGBA': 
     im = im.convert('RGBA') 
    width, height = im.size 
    gradient = Image.new('L', (width, 1), color=0xFF) 
    for x in range(width): 
     gradient.putpixel((0 + x, 0), x) 
    alpha = gradient.resize(im.size) 
    im.putalpha(alpha) 
    im.save('out.png', 'PNG') 

을하지만이와 나는 단지 흰색 그라데이션을 추가했다. 그라데이션의 색상을 변경하고 그라데이션의 크기를 조절하려면 어떻게해야합니까?

텍스트가없는 다음과 같이 작성해야합니다.

this

답변

2

코드는 실제로는 않습니다 말하는 않습니다. 그러나 이미지 배경이 검은 색이 아니라 흰색 인 경우 이미지가 더 밝게 표시됩니다. 다음 코드는 원본 이미지를 검은 색 이미지와 병합하므로 배경과 관계없이 어두운 그라데이션 효과를 갖습니다.

def test(path): 
    im = Image.open(path) 
    if im.mode != 'RGBA': 
     im = im.convert('RGBA') 
    width, height = im.size 
    gradient = Image.new('L', (width, 1), color=0xFF) 
    for x in range(width): 
     gradient.putpixel((x, 0), 255-x) 
    alpha = gradient.resize(im.size) 
    black_im = Image.new('RGBA', (width, height), color=0) # i.e. black 
    black_im.putalpha(alpha) 
    gradient_im = Image.alpha_composite(im, black_im) 
    gradient_im.save('out.png', 'PNG') 

편집

그라데이션을 확장 할 수있는 여러 가지 방법이 있습니다. 다음은 하나의 제안입니다.

def test(path, gradient_magnitude=1.): 
    im = Image.open(path) 
    if im.mode != 'RGBA': 
     im = im.convert('RGBA') 
    width, height = im.size 
    gradient = Image.new('L', (width, 1), color=0xFF) 
    for x in range(width): 
     # gradient.putpixel((x, 0), 255-x) 
     gradient.putpixel((x, 0), int(255 * (1 - gradient_magnitude * float(x)/width))) 
    alpha = gradient.resize(im.size) 
    black_im = Image.new('RGBA', (width, height), color=0) # i.e. black 
    black_im.putalpha(alpha) 
    gradient_im = Image.alpha_composite(im, black_im) 
    gradient_im.save('out.png', 'PNG') 
+0

감사합니다. 그것은 작동 보인다. 그래디언트 크기는 어떻게 제어 할 수 있습니까? 전체 이미지 크기에 그라데이션이 필요하지 않습니다. – saa

+0

죄송합니다, gradient_magnitude를 건너 뛰었습니다. 괜찮아 보입니다. 감사! – saa

+0

어쩌면 알고 있습니다. 더 많은 불투명도를 추가하려면 어떻게해야합니까? 그냥 왼쪽에 매우 검은 색입니다. – saa