Python论坛  - 讨论区

标题:[python-chinese] PIL的问题

2006年07月15日 星期六 00:06

chen arthur agakong at gmail.com
Sat Jul 15 00:06:39 HKT 2006

先把背景填成红色,再在图上贴一个有透明部分的png图,希望把透明效果实现出来(就是把后面的红色透出来):

im = Image.new('RGBA',(100,100),color=(255,255,255))
draw = ImageDraw.Draw(im)
draw.rectangle((0,0,100,100),fill="#cc0000")
i = Image.open('test.png')
im.paste(i,(0,0))
del draw
im.save('done.png')

但最后得到的done.png,贴上去的部分有透明,但不是把背景的红色透出来,而是把先前的红色给去掉了。

问题出在什么地方?

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年07月15日 星期六 02:36

swordsp sparas2006 at gmail.com
Sat Jul 15 02:36:31 HKT 2006

On 7/15/06, chen arthur <agakong at gmail.com> wrote:
>
> 先把背景填成红色,再在图上贴一个有透明部分的png图,希望把透明效果实现出来(就是把后面的红色透出来):
>
> im = Image.new('RGBA',(100,100),color=(255,255,255))
> draw = ImageDraw.Draw(im)
> draw.rectangle((0,0,100,100),fill="#cc0000")
> i = Image.open('test.png')
> im.paste(i,(0,0))


im.paste(i,i)  #等价于im.paste(i,None,i)
第一个参数image中只使用了其颜色信息,透明度的信息是通过第三个参数mask传进去的。
这里的确有一点不太直观,我第一次也弄糊涂了。

del draw
> im.save('done.png')
>
> 但最后得到的done.png,贴上去的部分有透明,但不是把背景的红色透出来,而是把先前的红色给去掉了。
>
> 问题出在什么地方?
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060715/e7df51d6/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年07月15日 星期六 12:07

chen arthur agakong at gmail.com
Sat Jul 15 12:07:52 HKT 2006

感谢,在网上查了一下,这样可以解决png的贴图,但如果是gif,
还需要这样:
mask = ''
if (i.mode == 'P'):
     colorTable = [255]*256
     colorTable[0] = 0 #anything black (0) will be made transparent
     mask = i.point (colorTable, '1') #make the transparency mask
if (i.mode == 'RGBA'):
     mask = i
if mask:
  img.paste(i,(0,0), mask)
else:
    img.paste(i,(0,0))

在 06-7-15,swordsp<sparas2006 at gmail.com> 写道:
>
>
> On 7/15/06, chen arthur <agakong at gmail.com> wrote:
> > 先把背景填成红色,再在图上贴一个有透明部分的png图,希望把透明效果实现出来(就是把后面的红色透出来):
> >
> > im = Image.new('RGBA',(100,100),color=(255,255,255))
> > draw = ImageDraw.Draw(im)
> > draw.rectangle((0,0,100,100),fill="#cc0000")
> > i = Image.open('test.png ')
> > im.paste(i,(0,0))
>
>
> im.paste(i,i)  #等价于im.paste(i,None,i)
> 第一个参数image中只使用了其颜色信息,透明度的信息是通过第三个参数mask传进去的。
> 这里的确有一点不太直观,我第一次也弄糊涂了。
>
> > del draw
> > im.save('done.png')
> >
> > 但最后得到的done.png,贴上去的部分有透明,但不是把背景的红色透出来,而是把先前的红色给去掉了。
> >
> > 问题出在什么地方?
> >
> >
>
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to
> python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to
> python-chinese-request at lists.python.cn
> Detail Info:
> http://python.cn/mailman/listinfo/python-chinese
>
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年07月15日 星期六 12:10

chen arthur agakong at gmail.com
Sat Jul 15 12:10:47 HKT 2006

还有一个中文显示的问题,用的是微软的simsun.ttc,
但好像字体大小是10可以,10以上显示的字都是花的?
哪位碰到过这个事情?

f = ImageFont.FreeTypeFont('simsun.ttc',14)
draw.text((x,y),unicode('中国','utf-8'),font=f,fill="#000000")


在 06-7-15,chen arthur<agakong at gmail.com> 写道:
> 感谢,在网上查了一下,这样可以解决png的贴图,但如果是gif,
> 还需要这样:
> mask = ''
> if (i.mode == 'P'):
>     colorTable = [255]*256
>     colorTable[0] = 0 #anything black (0) will be made transparent
>     mask = i.point (colorTable, '1') #make the transparency mask
> if (i.mode == 'RGBA'):
>     mask = i
> if mask:
>  img.paste(i,(0,0), mask)
> else:
>    img.paste(i,(0,0))
>
> 在 06-7-15,swordsp<sparas2006 at gmail.com> 写道:
> >
> >
> > On 7/15/06, chen arthur <agakong at gmail.com> wrote:
> > > 先把背景填成红色,再在图上贴一个有透明部分的png图,希望把透明效果实现出来(就是把后面的红色透出来):
> > >
> > > im = Image.new('RGBA',(100,100),color=(255,255,255))
> > > draw = ImageDraw.Draw(im)
> > > draw.rectangle((0,0,100,100),fill="#cc0000")
> > > i = Image.open('test.png ')
> > > im.paste(i,(0,0))
> >
> >
> > im.paste(i,i)  #等价于im.paste(i,None,i)
> > 第一个参数image中只使用了其颜色信息,透明度的信息是通过第三个参数mask传进去的。
> > 这里的确有一点不太直观,我第一次也弄糊涂了。
> >
> > > del draw
> > > im.save('done.png')
> > >
> > > 但最后得到的done.png,贴上去的部分有透明,但不是把背景的红色透出来,而是把先前的红色给去掉了。
> > >
> > > 问题出在什么地方?
> > >
> > >
> >
> >
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese at lists.python.cn
> > Subscribe: send subscribe to
> > python-chinese-request at lists.python.cn
> > Unsubscribe: send unsubscribe to
> > python-chinese-request at lists.python.cn
> > Detail Info:
> > http://python.cn/mailman/listinfo/python-chinese
> >
> >
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年07月15日 星期六 13:06

风向标 vaneoooo at gmail.com
Sat Jul 15 13:06:28 HKT 2006

哪有pil的中文资料呢

请问

在06-7-15,chen arthur <agakong at gmail.com> 写道:
>
> 还有一个中文显示的问题,用的是微软的simsun.ttc,
> 但好像字体大小是10可以,10以上显示的字都是花的?
> 哪位碰到过这个事情?
>
> f = ImageFont.FreeTypeFont('simsun.ttc',14)
> draw.text((x,y),unicode('中国','utf-8'),font=f,fill="#000000")
>
>
> 在 06-7-15,chen arthur<agakong at gmail.com> 写道:
> > 感谢,在网上查了一下,这样可以解决png的贴图,但如果是gif,
> > 还需要这样:
> > mask = ''
> > if (i.mode == 'P'):
> >     colorTable = [255]*256
> >     colorTable[0] = 0 #anything black (0) will be made transparent
> >     mask = i.point (colorTable, '1') #make the transparency mask
> > if (i.mode == 'RGBA'):
> >     mask = i
> > if mask:
> >  img.paste(i,(0,0), mask)
> > else:
> >    img.paste(i,(0,0))
> >
> > 在 06-7-15,swordsp<sparas2006 at gmail.com> 写道:
> > >
> > >
> > > On 7/15/06, chen arthur <agakong at gmail.com> wrote:
> > > > 先把背景填成红色,再在图上贴一个有透明部分的png图,希望把透明效果实现出来(就是把后面的红色透出来):
> > > >
> > > > im = Image.new('RGBA',(100,100),color=(255,255,255))
> > > > draw = ImageDraw.Draw(im)
> > > > draw.rectangle((0,0,100,100),fill="#cc0000")
> > > > i = Image.open('test.png ')
> > > > im.paste(i,(0,0))
> > >
> > >
> > > im.paste(i,i)  #等价于im.paste(i,None,i)
> > > 第一个参数image中只使用了其颜色信息,透明度的信息是通过第三个参数mask传进去的。
> > > 这里的确有一点不太直观,我第一次也弄糊涂了。
> > >
> > > > del draw
> > > > im.save('done.png')
> > > >
> > > > 但最后得到的done.png,贴上去的部分有透明,但不是把背景的红色透出来,而是把先前的红色给去掉了。
> > > >
> > > > 问题出在什么地方?
> > > >
> > > >
> > >
> > >
> > > _______________________________________________
> > > python-chinese
> > > Post: send python-chinese at lists.python.cn
> > > Subscribe: send subscribe to
> > > python-chinese-request at lists.python.cn
> > > Unsubscribe: send unsubscribe to
> > > python-chinese-request at lists.python.cn
> > > Detail Info:
> > > http://python.cn/mailman/listinfo/python-chinese
> > >
> > >
> >
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060715/c35b7255/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号