Exponential 6.0.13 Exponential Enterprise Open Source CMS - PHP Class Reference

ezimageinterface.php
Go to the documentation of this file.
1 <?php
19 class eZImageInterface
20 {
21 public $TextColor;
30 public function __construct( $imageObjectRef = null, $imageObject = null, $width = false, $height = false )
31 {
32 $this->ImageObjectRef = $imageObjectRef;
33 $this->ImageObject = $imageObject;
34 $this->Width = $width;
35 $this->Height = $height;
36 $this->AlternativeText = '';
37 $this->IsTrueColor = null;
38 $this->Palette = array();
39 $this->PaletteIndex = array();
40 $this->StoredPath = false;
41 $this->Font = null;
42 $this->IsProcessed = false;
43 }
44
49 function isTruecolor()
50 {
51 return $this->IsTrueColor;
52 }
53
59 function attributeMemberMap()
60 {
61 return array( 'filepath' => 'StoredPath',
62 'filename' => 'StoredFile',
63 'width' => 'Width',
64 'height' => 'Height',
65 'alternative_text' => 'AlternativeText' );
66 }
67
73 function attributeFunctionMap()
74 {
75 return array( 'imagepath' => 'imagePath',
76 'has_size' => 'hasSize' );
77 }
78
82 function attributes()
83 {
84 return array_merge( array_keys( eZImageInterface::attributeMemberMap() ),
85 array_keys( eZImageInterface::attributeFunctionMap() ) );
86 }
87
91 function hasAttribute( $name )
92 {
93 $attributeMemberMap = eZImageInterface::attributeMemberMap();
94 if ( isset( $attributeMemberMap[$name] ) )
95 return true;
96 $attributeFunctionMap = eZImageInterface::attributeFunctionMap();
97 if ( isset( $attributeFunctionMap[$name] ) )
98 return true;
99 return false;
100 }
101
105 function attribute( $name )
106 {
107 $attributeMemberMap = eZImageInterface::attributeMemberMap();
108 if ( isset( $attributeMemberMap[$name] ) )
109 {
110 $member = $attributeMemberMap[$name];
111 if ( isset( $this->$member ) )
112 return $this->$member;
113 eZDebug::writeWarning( 'The member variable $member was not found for attribute $name', __METHOD__ );
114 return null;
115 }
116 $attributeFunctionMap = eZImageInterface::attributeFunctionMap();
117 if ( isset( $attributeFunctionMap[$name] ) )
118 {
119 $function = $attributeFunctionMap[$name];
120 if ( method_exists( $this, $function ) )
121 return $this->$function();
122 eZDebug::writeWarning( 'The member function $function was not found for attribute $name', __METHOD__ );
123 return null;
124 }
125 eZDebug::writeError( "Attribute '$name' does not exist", __METHOD__ );
126 return null;
127 }
128
133 function isProcessed()
134 {
135 return $this->IsProcessed;
136 }
137
141 function &hasSize()
142 {
143 $hasSize = ( $this->Width !== false and $this->Height !== false );
144 return $hasSize;
145 }
146
150 function &imagePath()
151 {
152 $imagePath = $this->StoredPath . '/' . $this->StoredFile;
153 return $imagePath;
154 }
155
160 function setAlternativeText( $text )
161 {
162 $this->AlternativeText = $text;
163 }
164
169 function alternativeText()
170 {
171 return $this->AlternativeText;
172 }
173
180 static function registerImage( $image )
181 {
182 if ( !is_resource( $image ) or get_resource_type( $image ) != 'gd' )
183 return false;
184 $imageObjectRef = md5( microtime() );
185 $createdImageArray =& $GLOBALS['eZImageCreatedArray'];
186 if ( !is_array( $createdImageArray ) )
187 {
188 $createdImageArray = array();
189 register_shutdown_function( 'eZGlobalImageCleanupFunction' );
190 }
191 $createdImageArray[$imageObjectRef] = $image;
192 return $imageObjectRef;
193 }
194
198 static function unregisterImage( $imageRef )
199 {
200 $createdImageArray =& $GLOBALS['eZImageCreatedArray'];
201 if ( !is_array( $createdImageArray ) )
202 return;
203 if ( !isset( $createdImageArray[$imageRef] ) )
204 return;
205 unset( $createdImageArray[$imageRef] );
206 }
207
211 static function cleanupRegisteredImages()
212 {
213 $createdImageArray =& $GLOBALS['eZImageCreatedArray'];
214 if ( !is_array( $createdImageArray ) )
215 return;
216 foreach ( array_keys( $createdImageArray ) as $createImageKey )
217 {
218 $createdImage = $createdImageArray[$createImageKey];
219 if ( is_resource( $createdImage ) and get_resource_type( $createdImage ) == 'gd' )
220 ImageDestroy( $createdImage );
221 }
222 }
223
229 function loadPNG( $storedPath, $storedFile )
230 {
231 if ( !function_exists( 'ImageCreateFromPNG' ) )
232 return false;
233 $this->ImageObject = ImageCreateFromPNG( $storedPath . '/' . $storedFile );
234 if ( $this->ImageObject )
235 {
236 $this->ImageObjectRef = eZImageInterface::registerImage( $this->ImageObject );
237 return true;
238 }
239 return false;
240 }
241
247 function loadJPEG( $storedPath, $storedFile )
248 {
249 $this->ImageObject = ImageCreateFromJPEG( $storedPath . '/' . $storedFile );
250 if ( $this->ImageObject )
251 {
252 $this->ImageObjectRef = eZImageInterface::registerImage( $this->ImageObject );
253 return true;
254 }
255 return false;
256 }
257
263 function loadGIF( $storedPath, $storedFile )
264 {
265 if ( !function_exists( 'ImageCreateFromGIF' ) )
266 return false;
267 $this->ImageObject = ImageCreateFromGIF( $storedPath . '/' . $storedFile );
268 if ( $this->ImageObject )
269 {
270 $this->ImageObjectRef = eZImageInterface::registerImage( $this->ImageObject );
271 return true;
272 }
273 return false;
274 }
275
281 function load()
282 {
283 if ( $this->ImageObject !== null and
284 $this->ImageObjectRef !== null )
285 return;
286 switch( $this->StoredType )
287 {
288 case 'png':
289 {
290 return $this->loadPNG( $this->StoredPath, $this->StoredFile );
291 } break;
292
293 case 'jpg':
294 {
295 return $this->loadJPEG( $this->StoredPath, $this->StoredFile );
296 } break;
297
298 case 'gif':
299 {
300 return $this->loadGIF( $this->StoredPath, $this->StoredFile );
301 } break;
302
303 default:
304 {
305 if ( @$this->loadPNG( $this->StoredPath, $this->StoredFile ) )
306 return true;
307 else if ( @$this->loadJPEG( $this->StoredPath, $this->StoredFile ) )
308 return true;
309 else if ( @$this->loadGIF( $this->StoredPath, $this->StoredFile ) )
310 return true;
311 eZDebug::writeError( 'Image format not supported: ' . $this->StoredType, __METHOD__ );
312 }
313 }
314 return false;
315 }
316
320 function destroy()
321 {
322 if ( $this->ImageObjectRef === null )
323 return;
324 if ( is_resource( $this->ImageObject ) and get_resource_type( $this->ImageObject ) == 'gd' )
325 ImageDestroy( $this->ImageObject );
326 eZImageInterface::unregisterImage( $this->ImageObjectRef );
327 unset( $this->ImageObject );
328 $this->ImageObject = null;
329 $this->ImageObjectRef = null;
330 }
331
338 function imageObject( $createMissing = true )
339 {
340 if ( $this->ImageObject === null or
341 $this->ImageObjectRef === null )
342 {
343 if ( $createMissing )
344 {
345 if ( $this->StoredFile != '' )
346 {
347 $this->process();
348 }
349 }
350 }
351 return $this->ImageObject;
352 }
353
360 function imageObjectInternal( $createMissing = true )
361 {
362 if ( $this->ImageObject === null or
363 $this->ImageObjectRef === null )
364 {
365 if ( $createMissing )
366 $this->create( $this->Width, $this->Height );
367 }
368 return $this->ImageObject;
369 }
370
375 function process()
376 {
377 if ( $this->processImage() )
378 $this->IsProcessed = true;
379 }
380
387 function processImage()
388 {
389 if ( $this->StoredFile == '' )
390 return true;
391 $fileArray = array( $this->StoredPath, $this->StoredFile );
392 $filePath = eZDir::path( $fileArray );
393 $imageinfo = getimagesize( $filePath );
394 if ( $imageinfo )
395 {
396 $width = $imageinfo[0];
397 $height = $imageinfo[1];
398 if ( $this->load() )
399 {
400 $this->Width = $width;
401 $this->Height = $height;
402 return true;
403 }
404 else
405 eZDebug::writeWarning( "Image failed to load '$filePath'", __METHOD__ );
406 }
407 else
408 eZDebug::writeWarning( "No image info could be extracted from '$filePath'", __METHOD__ );
409 return false;
410 }
411
417 function store( $fileName, $filePath, $type )
418 {
419 if ( !$this->IsProcessed )
420 $this->process();
421 $imageObject = $this->imageObject();
422 switch( $type )
423 {
424 case 'png':
425 {
426 if ( !file_exists( $filePath ) )
427 {
428 eZDir::mkdir( $filePath, false, true );
429 }
430 $fileFullPath = eZDir::path( array( $filePath, $fileName ) );
431 ImagePNG( $imageObject, $fileFullPath );
432 $this->StoredPath = $filePath;
433 $this->StoredFile = $fileName;
434 $this->StoredType = $type;
435 return true;
436 } break;
437
438 case 'jpg':
439 {
440 if ( !file_exists( $filePath ) )
441 {
442 eZDir::mkdir( $filePath, false, true );
443 }
444 ImageJPEG( $imageObject, eZDir::path( array( $filePath, $fileName ) ) );
445 $this->StoredPath = $filePath;
446 $this->StoredFile = $fileName;
447 $this->StoredType = $type;
448 return true;
449 } break;
450
451 default:
452 {
453 eZDebug::writeError( 'Image format not supported: ' . $type, __METHOD__ );
454 }
455 }
456 return false;
457 }
458
463 static function hasGD2()
464 {
465 $imageINI = eZINI::instance( 'image.ini' );
466 return $imageINI->variable( 'GDSettings', 'HasGD2' ) == 'true';
467 // $testGD = get_extension_funcs( "gd" ); // Grab function list
468 // if ( !$testGD )
469 // {
470 // // echo "GD not even installed.";
471 // return false;
472 // }
473 // if ( in_array( "imagegd2",
474 // $testGD ) )
475 // return true;
476 // return false;
477 }
478
484 static function createImage( $width, $height, &$useTruecolor )
485 {
486 if ( $useTruecolor === null )
487 {
488 // print( "has GD2='" . eZImageInterface::hasGD2() . "'<br/>" );
489 $useTruecolor = eZImageInterface::hasGD2();
490 }
491 if ( $useTruecolor and
492 !function_exists( 'ImageCreateTrueColor' ) )
493 {
494 eZDebug::writeWarning( 'Function ImageCreateTrueColor does not exist, cannot create true color images', __METHOD__ );
495 $useTruecolor = false;
496 }
497 if ( $useTruecolor )
498 $imageObject = ImageCreateTrueColor( $width, $height );
499 else
500 $imageObject = ImageCreate( $width, $height );
501 return $imageObject;
502 }
503
510 function create( $width, $height, $useTruecolor = null )
511 {
512 if ( $this->ImageObject !== null and
513 $this->ImageObjectRef !== null )
514 {
515 $this->destroy();
516 }
517 unset( $this->ImageObject );
518 $this->ImageObject = eZImageInterface::createImage( $width, $height, $useTruecolor );
519 $this->Width = $width;
520 $this->Height = $height;
521 // eZDebug::writeDebug( $this->ImageObject, 'create' );
522 $this->IsTrueColor = $useTruecolor;
523 $this->ImageObjectRef = eZImageInterface::registerImage( $this->ImageObject );
524 }
525
529 function __clone()
530 {
531 $this->cloneImage( $this->imageObject(), $this->width(), $this->height(),
532 $this->isTruecolor() );
533 }
534
539 function cloneImage( $imageObject, $width, $height, $useTruecolor = null )
540 {
541 if ( $this->ImageObject !== null and
542 $this->ImageObjectRef !== null )
543 {
544 $this->destroy();
545 }
546 $this->ImageObject = eZImageInterface::createImage( $width, $height, $useTruecolor );
547 $this->IsTrueColor = $useTruecolor;
548 $this->ImageObjectRef = eZImageInterface::registerImage( $this->ImageObject );
549 ImageCopy( $this->ImageObject, $imageObject, 0, 0, 0, 0, $width, $height );
550 }
551
555 function width()
556 {
557 return $this->Width;
558 }
559
563 function height()
564 {
565 return $this->Height;
566 }
567
571 function setWidth( $w )
572 {
573 $this->Width = $w;
574 }
575
579 function setHeight( $h )
580 {
581 $this->Height = $h;
582 }
583
588 function setStoredFile( $file, $path, $type )
589 {
590 $this->StoredFile = $file;
591 $this->StoredPath = $path;
592 $this->StoredType = $type;
593 }
594
598 function setFont( $font )
599 {
600 $this->Font = $font;
601 }
602
606 function font()
607 {
608 return $this->Font;
609 }
610
616 function copyImage( $destinationImageObject, $imageObject,
617 $destinationX, $destinationY,
618 $sourceWidth, $sourceHeight, $sourceX = 0, $sourceY = 0 )
619 {
620 ImageCopy( $destinationImageObject, $imageObject,
621 $destinationX, $destinationY,
622 $sourceX, $sourceY, $sourceWidth, $sourceHeight );
623 }
624
633 function mergeImage( $destinationImageObject, $imageObject,
634 $destinationX, $destinationY,
635 $sourceWidth, $sourceHeight, $sourceX = 0, $sourceY = 0,
636 $transparency = 0 )
637 {
638 $percent = 100 - $transparency;
639 ImageCopyMerge( $destinationImageObject, $imageObject,
640 $destinationX, $destinationY,
641 $sourceX, $sourceY, $sourceWidth, $sourceHeight,
642 $percent );
643 }
644
651 function blendImage( $destinationImageObject, $imageObject,
652 $destinationX, $destinationY,
653 $sourceWidth, $sourceHeight, $sourceX = 0, $sourceY = 0 )
654 {
655 ImageAlphaBlending( $destinationImageObject, true );
656 ImageCopy( $destinationImageObject, $imageObject,
657 $destinationX, $destinationY,
658 $sourceX, $sourceY, $sourceWidth, $sourceHeight );
659 }
660
661 function merge( $imageObject, $x, $y, $width, $height )
662 {
663 if ( $this->ImageObject === null or
664 $this->ImageObjectRef === null )
665 return false;
666 // ImageAlphaBlending( $this->ImageObject, true );
667 imagecolortransparent( $imageObject, 0 );
668 // ImageCopy( $this->ImageObject, $imageObject, $x, $y, 0, 0, $width, $height );
669 ImageCopyMerge( $this->ImageObject, $imageObject, $x, $y, 0, 0, $width, $height, 50 );
670 }
671
676 function clear( $color = false )
677 {
678 if ( $color === false )
679 {
680 if ( count( $this->PaletteIndex ) > 0)
681 $color = $this->PaletteIndex[0];
682 else
683 $color = 'bgcol';
684 }
685 if ( is_string( $color ) )
686 $color = $this->color( $color );
687 ImageFilledRectangle( $this->ImageObject, 0, 0, $this->Width, $this->Height, $color );
688 }
689
694 function allocateColor( $name, $red, $green, $blue )
695 {
696 if ( isset( $this->Palette[$name] ) )
697 {
698 eZDebug::writeError( 'Color already defined: ' . $name, __METHOD__ );
699 return null;
700 }
701 $red = max( 0, min( 255, $red ) );
702 $green = max( 0, min( 255, $green ) );
703 $blue = max( 0, min( 255, $blue ) );
704 $color = ImageColorAllocate( $this->ImageObject, $red, $green, $blue );
705 $this->Palette[$name] = $color;
706 $this->PaletteIndex[] = $color;
707 return $color;
708 }
709
713 function color( $name )
714 {
715 if ( !isset( $this->Palette[$name] ) )
716 {
717 eZDebug::writeError( 'Color not defined: ' . $name, __METHOD__ );
718 return null;
719 }
720 return $this->Palette[$name];
721 }
722
726 function textColor()
727 {
728 return $this->TextColor;
729 }
730
734 function setTextColor( $textColor )
735 {
736 $this->TextColor = $textColor;
737 }
738
745 function drawText( &$font, $textColor, $text, $x, $y, $angle,
746 $imageObject = null )
747 {
748 if ( !$font )
749 {
750 eZDebug::writeWarning( 'Cannot render text, no font is set', __METHOD__ );
751 return false;
752 }
753 if ( !$textColor )
754 {
755 eZDebug::writeWarning( 'Cannot render text, no text color is set', __METHOD__ );
756 return false;
757 }
758 if ( is_string( $textColor ) )
759 $textColor = $this->color( $textColor );
760 if ( $textColor === null )
761 {
762 eZDebug::writeWarning( 'Cannot render text, invalid text color', __METHOD__ );
763 return false;
764 }
765
766 $x += $font->xAdjustment();
767 $y += $font->yAdjustment();
768
769 if ( $imageObject === null )
770 $imageObject = $this->ImageObject;
771
772 ImageTTFText( $imageObject, $font->pointSize(), $angle, $x, $y,
773 $textColor, $font->realFile(), $text );
774 }
775
777 public $Width;
778 public $Height;
779 public $Font;
780 public $ImageObject;
781 public $ImageObjectRef;
782 public $StoredFile;
783 public $StoredPath;
784 public $StoredType;
785 public $PaletteIndex;
786 public $Palette;
787 public $AlternativeText;
788 public $IsTrueColor;
789 public $IsProcessed;
790 }
791
796 function eZGlobalImageCleanupFunction()
797 {
798 eZImageInterface::cleanupRegisteredImages();
799 }
800
801 ?>
eZDebug\writeError
static writeError( $string, $label="", $backgroundClass="")
Definition: ezdebug.php:545
eZDebug\writeWarning
static writeWarning( $string, $label="", $backgroundClass="")
Definition: ezdebug.php:502
eZDir\mkdir
static mkdir( $dir, $perm=false, $recursive=false)
Definition: ezdir.php:73
eZDir\path
static path( $names, $includeEndSeparator=false, $type=self::SEPARATOR_UNIX)
Definition: ezdir.php:237
eZImageInterface
Base interface for all image object and layer classes.
Definition: ezimageinterface.php:20
eZImageInterface\$TextColor
$TextColor
Definition: ezimageinterface.php:21
eZImageInterface\hasGD2
static hasGD2()
Definition: ezimageinterface.php:463
eZImageInterface\clear
clear( $color=false)
Definition: ezimageinterface.php:676
eZImageInterface\$AlternativeText
$AlternativeText
Definition: ezimageinterface.php:787
eZImageInterface\setStoredFile
setStoredFile( $file, $path, $type)
Definition: ezimageinterface.php:588
eZImageInterface\$IsTrueColor
$IsTrueColor
Definition: ezimageinterface.php:788
eZImageInterface\width
width()
Definition: ezimageinterface.php:555
eZImageInterface\cloneImage
cloneImage( $imageObject, $width, $height, $useTruecolor=null)
Definition: ezimageinterface.php:539
eZImageInterface\$ImageObjectRef
$ImageObjectRef
Definition: ezimageinterface.php:781
eZImageInterface\loadGIF
loadGIF( $storedPath, $storedFile)
Definition: ezimageinterface.php:263
eZImageInterface\__clone
__clone()
Definition: ezimageinterface.php:529
eZImageInterface\__construct
__construct( $imageObjectRef=null, $imageObject=null, $width=false, $height=false)
Definition: ezimageinterface.php:30
eZImageInterface\attribute
attribute( $name)
Definition: ezimageinterface.php:105
eZImageInterface\mergeImage
mergeImage( $destinationImageObject, $imageObject, $destinationX, $destinationY, $sourceWidth, $sourceHeight, $sourceX=0, $sourceY=0, $transparency=0)
Definition: ezimageinterface.php:633
eZImageInterface\hasAttribute
hasAttribute( $name)
Definition: ezimageinterface.php:91
eZImageInterface\$ImageObject
$ImageObject
Definition: ezimageinterface.php:780
eZImageInterface\drawText
drawText(&$font, $textColor, $text, $x, $y, $angle, $imageObject=null)
Definition: ezimageinterface.php:745
eZImageInterface\imageObjectInternal
imageObjectInternal( $createMissing=true)
Definition: ezimageinterface.php:360
eZImageInterface\alternativeText
alternativeText()
Definition: ezimageinterface.php:169
eZImageInterface\$StoredType
$StoredType
Definition: ezimageinterface.php:784
eZImageInterface\createImage
static createImage( $width, $height, &$useTruecolor)
Definition: ezimageinterface.php:484
eZImageInterface\loadJPEG
loadJPEG( $storedPath, $storedFile)
Definition: ezimageinterface.php:247
eZImageInterface\setWidth
setWidth( $w)
Definition: ezimageinterface.php:571
eZImageInterface\$StoredFile
$StoredFile
Definition: ezimageinterface.php:782
eZImageInterface\copyImage
copyImage( $destinationImageObject, $imageObject, $destinationX, $destinationY, $sourceWidth, $sourceHeight, $sourceX=0, $sourceY=0)
Definition: ezimageinterface.php:616
eZImageInterface\store
store( $fileName, $filePath, $type)
Definition: ezimageinterface.php:417
eZImageInterface\isProcessed
isProcessed()
Definition: ezimageinterface.php:133
eZImageInterface\textColor
textColor()
Definition: ezimageinterface.php:726
eZImageInterface\create
create( $width, $height, $useTruecolor=null)
Definition: ezimageinterface.php:510
eZImageInterface\process
process()
Definition: ezimageinterface.php:375
eZImageInterface\setTextColor
setTextColor( $textColor)
Definition: ezimageinterface.php:734
eZImageInterface\isTruecolor
isTruecolor()
Definition: ezimageinterface.php:49
eZImageInterface\blendImage
blendImage( $destinationImageObject, $imageObject, $destinationX, $destinationY, $sourceWidth, $sourceHeight, $sourceX=0, $sourceY=0)
Definition: ezimageinterface.php:651
eZImageInterface\height
height()
Definition: ezimageinterface.php:563
eZImageInterface\$StoredPath
$StoredPath
Definition: ezimageinterface.php:783
eZImageInterface\setHeight
setHeight( $h)
Definition: ezimageinterface.php:579
eZImageInterface\allocateColor
allocateColor( $name, $red, $green, $blue)
Definition: ezimageinterface.php:694
eZImageInterface\$Font
$Font
Definition: ezimageinterface.php:779
eZImageInterface\attributeMemberMap
attributeMemberMap()
Definition: ezimageinterface.php:59
eZImageInterface\destroy
destroy()
Definition: ezimageinterface.php:320
eZImageInterface\attributeFunctionMap
attributeFunctionMap()
Definition: ezimageinterface.php:73
eZImageInterface\font
font()
Definition: ezimageinterface.php:606
eZImageInterface\$Width
$Width
Definition: ezimageinterface.php:777
eZImageInterface\hasSize
& hasSize()
Definition: ezimageinterface.php:141
eZImageInterface\$IsProcessed
$IsProcessed
Definition: ezimageinterface.php:789
eZImageInterface\setAlternativeText
setAlternativeText( $text)
Definition: ezimageinterface.php:160
eZImageInterface\loadPNG
loadPNG( $storedPath, $storedFile)
Definition: ezimageinterface.php:229
eZImageInterface\registerImage
static registerImage( $image)
Definition: ezimageinterface.php:180
eZImageInterface\load
load()
Definition: ezimageinterface.php:281
eZImageInterface\color
color( $name)
Definition: ezimageinterface.php:713
eZImageInterface\imageObject
imageObject( $createMissing=true)
Definition: ezimageinterface.php:338
eZImageInterface\merge
merge( $imageObject, $x, $y, $width, $height)
Definition: ezimageinterface.php:661
eZImageInterface\$Height
$Height
Definition: ezimageinterface.php:778
eZImageInterface\unregisterImage
static unregisterImage( $imageRef)
Definition: ezimageinterface.php:198
eZImageInterface\setFont
setFont( $font)
Definition: ezimageinterface.php:598
eZImageInterface\imagePath
& imagePath()
Definition: ezimageinterface.php:150
eZImageInterface\processImage
processImage()
Definition: ezimageinterface.php:387
eZImageInterface\$Palette
$Palette
Definition: ezimageinterface.php:786
eZImageInterface\cleanupRegisteredImages
static cleanupRegisteredImages()
Definition: ezimageinterface.php:211
eZImageInterface\$PaletteIndex
$PaletteIndex
Definition: ezimageinterface.php:785
eZImageInterface\attributes
attributes()
Definition: ezimageinterface.php:82
eZGlobalImageCleanupFunction
eZGlobalImageCleanupFunction()
Definition: ezimageinterface.php:796
Copyright © 1998 – 2026 7x. All rights reserved. Licensed under the GNU GPLv2+.