[TYPO3-english] Get image data without actually showing the image

"Christian Müller [kitsunet]" christian at kitsunet.de
Thu Mar 18 10:55:31 CET 2010


On 17.03.2010 10:33, jochem nabuurs wrote:
> jochem nabuurs wrote:
>> jochem nabuurs wrote:
>>> Hi list,
>>>
>>> I've created the following code for generating an image with a mask
>>> onto it, to use as a background for a website.
>>>
>>> // Fetch one random image from border column,
>>> // apply a mask onto it, and use the url in the body tag
>>> //
>>> // In order for the code below to work, you need to set the following
>>> // settings inside local_conf.php or change them through the installtool
>>> // $TYPO3_CONF_VARS['GFX']['gdlib_png'] = '1';
>>> // $TYPO3_CONF_VARS['GFX']['gdlib_2'] = '1';
>>> // $TYPO3_CONF_VARS['GFX']['png_truecolor'] = '1';
>>> // ---------------------------------------------------------------------
>>>
>>> temp.headerImage = CONTENT
>>> temp.headerImage {
>>> // Fetch a random image from the database
>>> table= tt_content
>>> select {
>>> pidInList = 2
>>> max = 1
>>> where = CType='image'
>>> andWhere (
>>> colPos=3 AND
>>> image!=''
>>> )
>>> orderBy = rand()
>>> }
>>> // Generate a new image from the old one,
>>> // with a nice green gradient on top of it.
>>> renderObj = COA
>>> renderObj {
>>> // generate the image
>>> 10 = IMAGE
>>> 10 {
>>> params = style="display:none;"
>>> file = GIFBUILDER
>>> file {
>>> XY = 1000, 750
>>> format = jpg
>>> quality = 100
>>> // get the original image
>>> 10 = IMAGE
>>> 10 {
>>> file {
>>> import = uploads/pics/
>>> import.field = image
>>> width = 1000
>>> height = 750
>>> }
>>> offset = 0,0
>>> }
>>> 15 = IMAGE
>>> 15 {
>>> offset = 0,0
>>> file = fileadmin/images/foto.png
>>> file {
>>> width = 1000
>>> height = 750
>>> }
>>> }
>>> }
>>> }
>>> // Create the bodytag contents
>>> // With the TSFE:lastImageInfo object,
>>> // you've got access to the image data
>>> // Don't know exactly how this works.
>>> 20 = TEXT
>>> 20.dataWrap = <body id="home" style="background-image:
>>> url({TSFE:lastImageInfo|3});">
>>> 20.insertData = 1
>>> }
>>> }
>>>
>>>
>>> page.234 < temp.headerImage
>>>
>>> page.bodyTagCObject = TEXT
>>> page.bodyTagCObject < temp.headerImage.20
>>>
>>>
>>> The above works perfect, but the "page.234" part outputs an image tag
>>> in the HTML code, which is not what i want. I've partially solved
>>> this with setting params = style="display:none;" so the image isn't
>>> displayed.
>>>
>>> I'd like to remove the "page.234 < .." part but then the image object
>>> isn't available (or something like that) and with it, the
>>> lastImageInfo data.
>>>
>>> What I'd like to know is how to access the lastImageInfo object of
>>> the generated image, without having to output the actual image as a
>>> HTML element.
>>>
>>> Thanks in advance,
>>>
>>> Jochem Nabuurs
>>>
>>>
>>
>> I've got an addition to the above:
>> Within the CONTENT object, I use RAND() for selecting a random image.
>> But when I view the result in the website, the image is only shown at
>> random when refreshing with crtl + f5.
>>
>> I thought this was because the image is cached, so I modified the the
>> code so the headerImage should not be cached:
>>
>> page.bodyTagCObject = COA_INT
>> page.bodyTagCObject.10 < temp.headerImage.20
>>
>> I've also changed renderObj to a COA_INT but these changes haven't got
>> any effect.
>>
>> Can anybody tell me why the random function is not working?
>>
>> Thanks in advance
>
> Never mind:
>
> temp.headerImage was a CONTENT object, so it is cached. Therefor the
> output of this object is cached, and therefor also the result of the
> rand function.
>
> By changing the temp.headerImage to a COA_INT object with the CONTENT
> object inside, the CONTENT object is not cached anymore and the rand
> function is executed every time a refresh occurs...
>
> Code example:
> ....
> lib.headerImage = COA_INT
> lib.headerImage.10 = CONTENT
> lib.headerImage.10 {
> ...
> }
> ....
> page.234 < lib.headerImage
> page.bodyTagCObject < lib.headerImage.20
> ....
>
>
> Still wondering if there is a workaround for the page.234 thing...
>
>
>

I would expect the info to be available as soon as the code was 
"executed" which it isn't in a temp / lib. So no way around page.234 but 
you could output into a register with LOAD_REGISTER, that should work 
too and doesn't output anything.

Christian


More information about the TYPO3-english mailing list