Gifbuilder

View: New views
1 Messages — Rating Filter:   Alert me  

Gifbuilder

by StephenBungert :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Does gif builder convert whatever source images it uses first to a gif, before then saving it in the 'format' specified?

Fort a site I'm making, all tt_news images must have grey borders with round corners.

To achieve this I have used an image processing script like the one below. It does everything I need. It sizes the images and makes a greyborder with round corners, and within the border is the article's image. What it also does it make the outputed image look shite.

It must be a something gifbuilder is doing to the image before saving as png. Is there anyway that I can do this without the image quality being ruined? Is there away maybe of combining the original image with a gifbuilder image (of the border and mask) rather then making teh original also a part of the gifbuilder?

<?php
/***************************************************************
*  Copyright notice
*
*  (c) 1999-2004 Kasper Skaarhoj (kasper@typo3.com)
*  All rights reserved
*
*  This script is part of the TYPO3 project. The TYPO3 project 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 2 of the License, or
*  (at your option) any later version.
*
*  The GNU General Public License can be found at
*  http://www.gnu.org/copyleft/gpl.html.
*  A copy is found in the textfile GPL.txt and important notices to the license
*  from the author is found in LICENSE.txt distributed with these scripts.
*
*
*  This script 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.
*
*  This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/

function user_fmfV2ImageProcessor($paramArray, $conf) {
        $markerArray = $paramArray[0];
        $lConf = $paramArray[1];
    $pObj = &$conf['parentObj']; // make a reference to the parent-object
        $row = $pObj->local_cObj->data;
       
        $picWidthList = '147';
        $picHeightList = $picWidthList;
        $picWidthLatest = '469';
        $picHeightLatest = '314';
        $picFilePath = 'uploads/pics/';
        $picBasePath = 'fileadmin/templates/fmf/v2/images/';
       
        $imageNum = isset($lConf['imageCount']) ? $lConf['imageCount']:1;
        $imageNum = t3lib_div::intInRange($imageNum, 0, 100);
        $theImgCode = '';
        $imgs = t3lib_div::trimExplode(',', $row['image'], 1);
        $imgsCaptions = explode(chr(10), $row['imagecaption']);
        $imgsAltTexts = explode(chr(10), $row['imagealttext']);
        $imgsTitleTexts = explode(chr(10), $row['imagetitletext']);

        reset($imgs);

        $cc = 0;
       
        $whatToDisplay = $pObj->cObj->data['pi_flexform']['data']['sDEF']['lDEF']['what_to_display']['vDEF'];
       
// Not tested with multiple image articles
        if ($whatToDisplay == 'SINGLE') {
                // remove first img from the image array in single view if the TSvar firstImageIsPreview is set
                if (( (count($imgs) > 1 && $pObj->config['firstImageIsPreview']) || (count($imgs) >= 1 && $pObj->config['forceFirstImageIsPreview']))) {
                        array_shift($imgs);
                        array_shift($imgsCaptions);
                        array_shift($imgsAltTexts);
                        array_shift($imgsTitleTexts);
                }
               
                // get img array parts for single view pages
                if ($pObj->piVars[$pObj->config['singleViewPointerName']]) {
                        $spage = $pObj->piVars[$pObj->config['singleViewPointerName']];
                        $astart = $imageNum*$spage;
                        $imgs = array_slice($imgs,$astart,$imageNum);
                        $imgsCaptions = array_slice($imgsCaptions,$astart,$imageNum);
                        $imgsAltTexts = array_slice($imgsAltTexts,$astart,$imageNum);
                        $imgsTitleTexts = array_slice($imgsTitleTexts,$astart,$imageNum);
                }
               
                // Still to do...
                // SINGLE page articles don't have images in V2. May need to later handle images for SINGLE if this changes.
        }
       
        if ($whatToDisplay == 'LIST' || $whatToDisplay == 'SEARCH') {
                while (list(, $val) = each($imgs)) {
                        if ($cc == $imageNum) break;
                        if ($val) {
                                $lConf['image.']['file'] = 'GIFBUILDER';
                                $lConf['image.']['file.']['XY'] = $picWidthList . ',' . $picHeightList;
                                $lConf['image.']['file.']['format'] = 'jpg';
                                $lConf['image.']['file.']['quality'] = '80';
                               
                                $lConf['image.']['file.']['10'] = 'IMAGE';
                                $lConf['image.']['file.']['10.']['file'] = $picFilePath . $val;
                                $lConf['image.']['file.']['10.']['file.']['minW'] = $picWidthList;
                                $lConf['image.']['file.']['10.']['file.']['minH'] = $picHeightList;
                                $lConf['image.']['file.']['10.']['file.']['XY'] = $picWidthList . ',' . $picHeightList;
                                $lConf['image.']['file.']['10.']['file.']['width'] = $picWidthList . 'c';
                                $lConf['image.']['file.']['10.']['file.']['height'] = $picHeightList . 'c';
                               
                                $lConf['image.']['file.']['20'] = 'IMAGE';
                                $lConf['image.']['file.']['20.']['file'] = $picBasePath . 'art_small.gif';
                                $lConf['image.']['file.']['20.']['file.']['minW'] = $picWidthList;
                                $lConf['image.']['file.']['20.']['file.']['minH'] = $picHeightList;
                                $lConf['image.']['file.']['20.']['file.']['XY'] = $picWidthList . ',' . $picHeightList;
                                $lConf['image.']['file.']['20.']['file.']['width'] = $picWidthList . 'c';
                                $lConf['image.']['file.']['20.']['file.']['height'] = $picHeightList . 'c';
                               
                                $lConf['image.']['file.']['20.']['mask'] = $picBasePath . 'art_small_mask3.gif';
                                $lConf['image.']['file.']['20.']['mask.']['minW'] = $picWidthList;
                                $lConf['image.']['file.']['20.']['mask.']['minH'] = $picHeightList;
                                $lConf['image.']['file.']['20.']['mask.']['XY'] = $picWidthList . ',' . $picHeightList;
                                $lConf['image.']['file.']['20.']['mask.']['width'] = $picWidthList . 'c';
                                $lConf['image.']['file.']['20.']['mask.']['height'] = $picHeightList . 'c';
                               
                                $lConf['image.']['altText'] = $imgsAltTexts[$cc];
                                $lConf['image.']['titleText'] = $imgsTitleTexts[$cc];
                        }
                        $theImgCode .= $pObj->local_cObj->IMAGE($lConf['image.']) . $pObj->local_cObj->stdWrap($imgsCaptions[$cc], $lConf['caption_stdWrap.']);
                        $cc++;
                        unset($imgs[0]);
                }
        } else if ($whatToDisplay == 'LATEST') {
                while (list(, $val) = each($imgs)) {
                        if ($cc == $imageNum) break;
                        if ($val) {
                                $lConf['image.']['file'] = 'GIFBUILDER';
                                $lConf['image.']['file.']['XY'] = $picWidthLatest . ',' . $picHeightLatest;
                                $lConf['image.']['file.']['format'] = 'jpg';
                                $lConf['image.']['file.']['quality'] = '80';
                               
                                $lConf['image.']['file.']['10'] = 'IMAGE';
                                $lConf['image.']['file.']['10.']['file'] = $picFilePath . $val;
                                $lConf['image.']['file.']['10.']['file.']['minW'] = $picWidthLatest;
                                $lConf['image.']['file.']['10.']['file.']['minH'] = $picHeightLatest;
                                $lConf['image.']['file.']['10.']['file.']['XY'] = $picWidthLatest . ',' . $picHeightLatest;
                                $lConf['image.']['file.']['10.']['file.']['width'] = $picWidthLatest . 'c';
                                $lConf['image.']['file.']['10.']['file.']['height'] = $picHeightLatest . 'c';
                               
                                $lConf['image.']['file.']['20'] = 'IMAGE';
                                $lConf['image.']['file.']['20.']['file'] = $picBasePath . 'art_large.jpg';
                                $lConf['image.']['file.']['20.']['file.']['minW'] = $picWidthLatest;
                                $lConf['image.']['file.']['20.']['file.']['minH'] = $picHeightLatest;
                                $lConf['image.']['file.']['20.']['file.']['XY'] = $picWidthLatest . ',' . $picHeightLatest;
                                $lConf['image.']['file.']['20.']['file.']['width'] = $picWidthLatest . 'c';
                                $lConf['image.']['file.']['20.']['file.']['height'] = $picHeightLatest . 'c';
                               
                                $lConf['image.']['file.']['20.']['mask'] = $picBasePath . 'article_large_mask3.png';
                                $lConf['image.']['file.']['20.']['mask.']['minW'] = $picWidthLatest;
                                $lConf['image.']['file.']['20.']['mask.']['minH'] = $picHeightLatest;
                                $lConf['image.']['file.']['20.']['mask.']['XY'] = $picWidthLatest . ',' . $picHeightLatest;
                                $lConf['image.']['file.']['20.']['mask.']['width'] = $picWidthLatest . 'c';
                                $lConf['image.']['file.']['20.']['mask.']['height'] = $picHeightLatest . 'c';
                               
                                $lConf['image.']['altText'] = $imgsAltTexts[$cc];
                                $lConf['image.']['titleText'] = $imgsTitleTexts[$cc];
                        }
                        $theImgCode .= $pObj->local_cObj->IMAGE($lConf['image.']) . $pObj->local_cObj->stdWrap($imgsCaptions[$cc], $lConf['caption_stdWrap.']);
                        $cc++;
                        unset($imgs[0]);
                }
        }
       
        $markerArray['###NEWS_IMAGE###'] = '';
       
        if ($cc) {
                $markerArray['###NEWS_IMAGE###'] = $pObj->local_cObj->wrap(trim($theImgCode), $lConf['imageWrapIfAny']);
        } else {
                $markerArray['###NEWS_IMAGE###'] = $pObj->local_cObj->stdWrap($markerArray['###NEWS_IMAGE###'],$lConf['image.']['noImage_stdWrap.']);
        }
       
        return $markerArray;
}
?>
--
Stephen Bungert
LightInTheBox - Buy quality products at wholesale price!