String Literal to Blob

Jason Scheirer jason.scheirer at gmail.com
Sat Apr 12 21:14:31 EDT 2008


On Apr 12, 2:44 pm, Steve Holden <st... at holdenweb.com> wrote:
> Victor Subervi wrote:
> > in line...
>
> > On Fri, Apr 11, 2008 at 2:05 PM, Steve Holden <st... at holdenweb.com
> > <mailto:st... at holdenweb.com>> wrote:
>
> >     Victor Subervi wrote:
> >      > I have worked on this many hours a day for two weeks. If there is an
> >      > easier way to do it, just take a minute or two and point it out. Have
> >      > you heard of the Law of Diminishing Returns? I have passed it
> >     long ago.
> >      > I no longer want to waste time trying to guess at what you are
> >     trying to
> >      > tell me.
> >      > Victor
>
> >      > On Fri, Apr 11, 2008 at 8:55 AM, Steve Holden
> >     <st... at holdenweb.com <mailto:st... at holdenweb.com>
> >      > <mailto:st... at holdenweb.com <mailto:st... at holdenweb.com>>> wrote:
> >     Where you have
>
> >                 content = col_fields[0][14].tostring()
> >                 pic = "tmp" + str(i) + ".jpg"
> >                 img = open(pic, "w")
> >                 img.write(content)
> >                 print '<img src="%s"><br /><br />' % pic
> >                 img.close()
>
> >     instead write
>
> >                 print content
>
> > Like this, I presume?
>
> Yes. You might need to use content.tostring() - I am not familiar with
> MySQL blobs.
>
> >             img = open(pic, "w")
> >             img.write(content)
> >             print '<td><input type="hidden" name="%s"' % str(x), '
> > value="%s">' % pic
> >             print content
> > #            print '<img src="%s"><br /><br /></td>\n' % pic
> > Does not work _at_all LOL. You will recall, also, that you once gave me
> > a line similar to the one commented out (but without writing then
> > opening the file). THAT did not work, either. So now do you see why I am
> > frustrated??
>
> >     Then browse to the URL this program serves and you will see the image
> >     (assuming you are still sending the image/jpeg content type).
>
> > Well, as I mentioned before, I am sending text/html because the page,
> > like almost all web pages, has a whole lot more content than just
> > images. Or, perhaps you are suggesting I build my pages in frames, and
> > have a frame for every image. Unsightly!
>
> Dear Victor:
>
> If you cannot understand, after being told several times by different
> people, that pages with images in them are achieved by multiple HTTP
> requests, then there is little I can do to help you.
>
>
>
> >     Once you
> >     can see the image, THEN you can write a page that refers to it. Until
> >     you start serving the image (NOT pseudo-html with image data embedded in
> >      it) nothing else will work.
>
> > My solution works just fine, thank you. It is inelegant. But it now
> > appears to me, and I dare say rather clearly, that this inelegance is
> > the fault of python itself. Perhaps this should be brought to Guido´s
> > attention.
> > Victor
>
> You can say it as clearly as you like, but if you say it too loudly you
> will make a laughing stock of yourself.
>
> You surely don't think that a language that supports Zope, TurboGears,
> Pylons and Django (to name but the first four that come to mind) is
> unsuitable for web programming?
>
> Please, do yourself a big favor and persist with this until you
> understand what you are doing wrong and how to serve dynamic images. It
> appears that the learning may be painful, but I guarantee it will be
> worthwhile.
>
> regards
>   Steve
> --
> Steve Holden        +1 571 484 6266   +1 800 494 3119
> Holden Web LLC              http://www.holdenweb.com/

There _is_ a way to embed image data in HTML that is supported by
every major browser. It is ugly. Using the RFC 2397 (http://
www.ietf.org/rfc/rfc2397) spec for data URLs you could go

'<img src="data:image/jpg;base64,%s">' % base64.b64encode(image_data)

Obviously you need to import the base64 module somewhere in your code
and base64-encoded data is about a third larger than it would be
otherwise, so embedding anything particularly large is going to be a
huge pain and affect page load times pretty badly.



More information about the Python-list mailing list