[Python-apps-team] Bug#811184: Solved

Magnus Berg norespons at burgsvik.se
Mon Feb 22 17:50:26 UTC 2016


Hi.

I solved the  problem today.

In the file usr/share/phatch/phatch/lib/pyWx/wxPil.py I changed the 
words "fromstring" and "tostring" to "frombytes" and "tobytes". Now 
Phatch seems to work with the latest python-imaging and python-pil 
libraries in Sid.

Below are my new usr/share/phatch/phatch/lib/pyWx/wxPil.py

I hope somebody can put this solution upstreams so the grate application 
Phatch will remain alive.

chears
Magnus Berg

-----------

# Copyright (C) 2007-2009 www.stani.be
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see http://www.gnu.org/licenses/

# Follows PEP8

import Image
import wx


def pil_wxImage(image):
     if image.mode == 'P':
         image = image.convert('RGBA')
     if image.mode == 'RGBA':
         wx_image = wx.EmptyImage(*image.size)
         wx_image.SetData(image.convert("RGB").tobytes())
         wx_image.InitAlpha()
         wx_image.SetAlphaData(
             image.convert("RGBA").split()[-1].tobytes())
     else:
         wx_image = wx.EmptyImage(*image.size)
         new_image = image.convert('RGB')
         data = new_image.tobytes()
         wx_image.SetData(data)
     return wx_image


def pil_wxBitmap(image):
     return wx.BitmapFromImage(pil_wxImage(image))


def wxImage_pil(wx_image):
     size = wx_image.GetSize()
     image = Image.new('RGB', size)
     image.frombytes(wx_image.GetData())
     if wx_image.HasAlpha():
         alpha = Image.new('L', size)
         wx_alpha = wx_image.GetAlphaData()
         alpha.frombytes(wx_alpha)
         image = image.convert('RGBA')
         image.putalpha(alpha)
     return image


def wxBitmap_pil(wx_bitmap):
     return wxImage_pil(wx.ImageFromBitmap(wx_bitmap))

----------



More information about the Python-apps-team mailing list