Seite 1 von 1

bug snapshot function capiImgScaleLQ

Verfasst: Mi 15. Dez 2004, 13:11
von emergence
da ich mich mit einem neuen projekt auseinandersetze hab ich mir die
functions.api.images.php etwas angesehen...

wirklich ein sehr brauchbares grundgerüst

jedoch bei

function capiImgScaleLQ

findet sich

Code: Alles auswählen

$imageHandle = @$function($filename); break;
das break; hat da nichts verloren, da es nicht in einer switch case anweisung steckt...

Verfasst: Mi 15. Dez 2004, 13:12
von emergence
ebenso ne nützliche änderung

das intressante bei der funktion ist das einige sehr nützliche funktionen enthalten sind, die weiter aufgesplittet werden sollten...
bei einer erweiterung um eigene funktionen wären folgende teile ebenso bei anderen funktionen brauchbar... doppelter code zahlt sich nicht aus...

ne eigene funktion sollte sein:

Code: Alles auswählen

	switch (strtolower($filetype))
	{
		case ".gif": $function = "imagecreatefromgif"; break;
		case ".png": $function = "imagecreatefrompng"; break;
		case ".jpg": $function = "imagecreatefromjpeg"; break;
		case "jpeg": $function = "imagecreatefromjpeg"; break;
		default: return false;
	}

	if (function_exists($function))
	{
		$imageHandle = @$function($filename);
	}
ebenso

Code: Alles auswählen

	if (!is_file($img))
	{
		/* Try with upload string */
		if (is_file($cfgClient[$client]["upl"]["path"].$img))
		{
			$img = $cfgClient[$client]["upl"]["path"].$img;
		} else {
    		/* DBFS-Based file */
    		if (is_dbfs($img))
    		{
    			$dbfs = new DBFSCollection;

    			$file = basename($img);

    			//echo "write to file from $img to ".$cfgClient[$client]["path"]["frontend"]."cache/".$file;
    			$dbfs->writeToFile($img, $cfgClient[$client]["path"]["frontend"]."cache/".$file);

    			$img = $cfgClient[$client]["path"]["frontend"]."cache/".$file;
    			$deleteAfter = true;
    		} else {
    			/* No, it's neither in the upload directory nor in the dbfs. return. */
    			return;
    		}
		}

	}
und

Code: Alles auswählen

	switch ($mxdAvImgEditingPosibility)
	{
		case '1': // gd1
			$method = 'gd1';
			if (!function_exists('imagecreatefromgif') && $filetype == '.gif')
			{
				$method = 'failure';
			}
			break;
		case '2': //gd2
			$method = 'gd2';
			if ($filetype == '.gif')
			{
				$arrGDInformations = gd_info();
				if (!$arrGDInformations['GIF Create Support'])
				{
					$method = 'failure';
				}
			}
			break;
		case 'im': //imagemagick
			$method = 'im';
			break;
		case '0':
			$method = 'failure';
			break;
		default:
			$method = 'failure';
			break;
	}

Verfasst: Mi 15. Dez 2004, 13:19
von timo
besser wäre es eigentlich, wenn man das ganze in eine Klasse auslagern würde - aber soweit sind wir leider noch nicht

Den Bug lasse ich mal offen, der muß selbstverfreilich noch gefixt werden.

Verfasst: Mi 15. Dez 2004, 13:27
von emergence
alles klar...

ich bau mir die sachen momentan entsprechend um

die erste auslagerung sieht momentan bei mir so aus:

Code: Alles auswählen

/**
* check image editing method
*
* return string $method
*/
function checkImageEditingMethod($filetype) {

	$mxdAvImgEditingPosibility= checkImageEditingPosibility();

	switch ($mxdAvImgEditingPosibility)
	{
		case '1': // gd1
			$method = 'gd1';
			if (!function_exists('imagecreatefromgif') && $filetype == '.gif')
			{
				$method = 'failure';
			}
			break;
		case '2': //gd2
			$method = 'gd2';
			if ($filetype == '.gif')
			{
				$arrGDInformations = gd_info();
				if (!$arrGDInformations['GIF Create Support'])
				{
					$method = 'failure';
				}
			}
			break;
		case 'im': //imagemagick
			$method = 'im';
			break;
		case '0':
			$method = 'failure';
			break;
		default:
			$method = 'failure';
			break;
	}

	return $method;
}
der aufruf dafür sieht nur mehr so aus:

Code: Alles auswählen

    $method = checkImageEditingMethod($filetype);
ich hoffe der name für die funktion ist so in ordnung ;-)

Verfasst: Mi 15. Dez 2004, 13:46
von emergence
da ist mir noch ne idee gekommen die ich eigentlich recht praktisch finden würde...

momentan ist es so das immer eine datei im ordner cache erstellt wird...
es wäre doch ganz praktisch nen parameter zu haben der die orginal datei ersetzen würde...

nur so als vorschlag...

Verfasst: Mi 15. Dez 2004, 14:30
von timo
ja das hatten wir auch schonmal, aber dann müßte man noch mehrere Dinge berücksichtigen....z.b. das Format muß gleich bleiben...

und die Parameteranzahl wird solangsam aber sicher ziemlich unkomfortabel ;)

Verfasst: Mi 15. Dez 2004, 14:41
von emergence
das mit die parameter stimmt ;-)

->

Code: Alles auswählen

function capiImgScale ($img, $maxX, $maxY, $crop = false, $expand = false, $cacheTime = 10, $wantHQ = false)
ähm das $wantHQ = false
kann rausfliegen, da es nicht verwendet wird... einer weniger...

Verfasst: Do 20. Jan 2005, 11:53
von timo
ok, beide Änderungen sind drin.