Hi,

I am trying to modify an image resize Python project. The project
(contributed by a good guy) and it works perfect, the only problem is
that I only want to resize a bigger image to smaller image, instead of
resizing smaller to bigger.

I need a parameter in the URL to control it e.g. r=1 then only
minimize the picture. I tried 3 days already to modify the code but I
have no luck since I found that appspot always return error! The
problem is I don't know how to program Python.

URL: 
http://image-resize.appspot.com/?url=http://image.gsfc.nasa.gov/image/image_launch_a5.jpg&width=200&height=200

I am wondering anyone could do me a favour to help modify the code.
Sorry for my bad English!

Ashley


# 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/
>.

from google.appengine.api        import images, memcache, urlfetch
from google.appengine.ext.webapp import RequestHandler, template,
util, WSGIApplication
from os                          import path

class ScaleHandler(RequestHandler):
    def get(self):
        # Retrieve the request parameters.
        url    = self.request.get("url")
        width  = self.request.get("width", "0")
        height = self.request.get("height", "0")
        r                        = self.request.get("r", "0")

        # If the url parameter has not been set, display the help
document.
        if not url:
            topbar = "http://www.yahoo.com";
            template_path = path.join(path.dirname(__file__),
"imagescaler.html")
            template_vars = {"topbar": urlfetch.fetch(topbar).content}
            self.response.out.write(template.render(template_path,
template_vars))
            return

        # Determine the cache key for the scaled image according to
the request parameters.
        key = "".join([width, "|", height, "|", url])

        # Search for the scaled image as a PNG first, then as a JPEG.
        thumbnail = memcache.get(key, "png")
        if thumbnail is None:
            thumbnail = memcache.get(key, "jpeg")
            if thumbnail is None:
                image = memcache.get(url, "png")
                if image is None:
                    image = memcache.get(url, "jpeg")
                    if image is None:
                        # Retrieve the original image from the remote
server.
                        file  = urlfetch.Fetch(url)
                        image = file.content

                        # Determine the namespace from the HTTP
response headers.
                        if file.headers["content-type"] == "image/
jpeg":
                            namespace = "jpeg"
                        else:
                            namespace = "png"

                        # Attempt to cache the original image if size
allows.
                        try:
                            memcache.add(url, image, 0, 0, namespace)
                        except Exception:
                            pass
                    else:
                        namespace = "jpeg"
                else:
                    namespace = "png"

                # Wrap the image in the Image API object.
                image = images.Image(image)

                # Resize the image according to the requested
dimensions.
                image.resize(int(width), int(height))

                # Generate the new version of the image.
                if namespace == "jpeg":
                    thumbnail =
image.execute_transforms(output_encoding=images.JPEG)
                else:
                    thumbnail = image.execute_transforms()

                # Cache the new version of the image.
                memcache.add(key, thumbnail, 0, 0, namespace)
            else:
                namespace = "jpeg"
        else:
            namespace = "png"

        # Generate the output to be sent back to the user agent.
        self.response.headers["content-type"] = "image/" + namespace
        self.response.out.write(thumbnail)

if __name__ == "__main__":
    util.run_wsgi_app(WSGIApplication([("/", ScaleHandler)],
debug=True))

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

Reply via email to