Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8519011
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 11, 20262026-06-11T06:07:56+00:00 2026-06-11T06:07:56+00:00

I’m trying to add a new method to the Image class from Python Imaging

  • 0

I’m trying to add a new method to the Image class from Python Imaging Library. I want to have a new class called DilateImage which acts exactly as the original Image class, except it also includes a dilate() function which modifies the class instance when it is executed on one. Here’s my example code (that isn’t working):

import Image

def DilateImage(Image):
   def dilate(self):
      imnew = self.copy()
      sourcepix = imnew.load()
      destpix = self.load()

      for y in range(self.size[1]):
         for x in range(self.size[0]):
            brightest = 255
            for dy in range(-1,2):
               for dx in range(-1,2):
                  try:
                     brightest = min(sourcepix[x+dx,y+dy], brightest)
                  except IndexError:
                     pass
            destpix[x, y] = brightest

When I try to use this new class type to create an instance that uses the base class’ “open” function it fails:

>>> test = DilateImage.open("test.jpg")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'function' object has no attribute 'open'
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-11T06:07:57+00:00Added an answer on June 11, 2026 at 6:07 am

    There are two problems with your code. One of them has been already pointed out, when defining a class, you need to use the class keyword, since def keyword defines a function or a method.

    The second problem is that the call

    import Image
    

    will import the module called Image into the Image namespace, so that Image in your code will refer to the module. It is not an object or class, so

    class MyImage(Image)
    

    will attempt to derive a new class from a module, which will fail.

    The Image module contains a class called Image. After importing the module into the Image namespace, you would refer to this class as Image.Image. To extend this class, you could do for example this:

    import Image
    
    class MyImage(Image.Image)
    

    To make this less confusing, you could also import the Image module into a different namespace:

    import Image as Img
    
    class MyImage(Img.Image)
    

    The problem with all that is, the PIL does not seem to be designed to allow this kind of extension to the Image class. Its modules provide bunch of functions that take instances of Image as arguments and return new instances of Image. there are only few methods in the actual Image class. So what you probably want to do is write a function that will take an instance if Image and create a new instance of Image, rather than extending the Image class by a new method. For example, something like this:

    import Image
    
    def DilateImage(source):
          dest = source.copy()
          sourcepix = source.load()
          destpix = dest.load()
    
          for y in range(source.size[1]):
             for x in range(source.size[0]):
                darkest = 255
                for dy in range(-1,2):
                   for dx in range(-1,2):
                      try:
                         darkest = min(sourcepix[x+dx,y+dy], darkest)
                      except IndexError:
                         pass
                destpix[x, y] = darkest
    
          return dest
    
    
    im1 = Image.open("test.jpg")
    
    img2 = DilateImage(im1)
    
    img2.show()
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a string like this: La Torre Eiffel paragonata all&#8217;Everest What PHP function
I have a French site that I want to parse, but am running into
I want use html5's new tag to play a wav file (currently only supported
I have a text area in my form which accepts all possible characters from
I'm trying to decode HTML entries from here NYTimes.com and I cannot figure out
I have a view passing on information from a database: def serve_article(request, id): served_article
I am trying to loop through a bunch of documents I have to put
I have a bunch of posts stored in text files formatted in yaml/textile (from
I have a .ini file as follows: [playlist] numberofentries=2 File1=http://87.230.82.17:80 Title1=(#1 - 365/1400) Example
I am trying to understand how to use SyndicationItem to display feed which is

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.