Jörg: ImageMagick (Fatal error: Uncaught Error: Call to undefined method Imagick::getImageSize() )

Hallo Forum,

habe versucht, ImageMagick in mein Xammp einzubinden.

Ich dachte eigentlich, dass mir das gelungen sei.

Trotzdem erhalte ich bei einer Klasse, die ich hierzu geschrieben habe und die in meinem alten Xampp sowie online funktionieren, jetzt folgenden Fehler:


Fatal error: Uncaught Error: Call to undefined method Imagick::getImageSize()...

Zum Vergleich:

So sieht mein entsprechender Online-Eintrag in der phpinfo aus:

Warum kennt Imagick die Methode nicht mehr?

Jörg

  1. Warum kennt Imagick die Methode nicht mehr?

    Ich befürchte, ich weiß, warum...

    The next planned release will be PHP > 7.0 and ImageMagick > 7.0 at least, if not higher.
    
    ...
    
    - Deprecated:
    * The following functions have been deprecated:
    ImagickDraw, matte
    Imagick::averageimages
    Imagick::colorfloodfillimage
    Imagick::filter
    Imagick::flattenimages
    Imagick::getimageattribute
    Imagick::getimagechannelextrema
    Imagick::getimageclipmask
    Imagick::getimageextrema
    Imagick::getimageindex
    Imagick::getimagematte
    Imagick::getimagemattecolor
    Imagick::getimagesize
    Imagick::mapimage
    Imagick::mattefloodfillimage
    Imagick::medianfilterimage
    Imagick::mosaicimages
    Imagick::orderedposterizeimage
    Imagick::paintfloodfillimage
    Imagick::paintopaqueimage
    Imagick::painttransparentimage
    Imagick::radialblurimage
    Imagick::recolorimage
    Imagick::reducenoiseimage
    Imagick::roundcornersimage
    Imagick::roundcorners
    Imagick::setimageattribute
    Imagick::setimagebias
    Imagick::setimageclipmask
    Imagick::setimageindex
    Imagick::setimagemattecolor
    Imagick::setimagebiasquantum
    Imagick::setimageopacity
    Imagick::transformimage 
    
  2. Hallo,

    Warum kennt Imagick die Methode nicht mehr?

    Weil

    Warning

    This function has been DEPRECATED as of Imagick 3.4.4. Relying on this >function is highly discouraged.

    Für mich ist zwar deprecated ≠ undefined, aber nunja…

    Gruß
    Kalk

    1. Hallo Tabellenkalk,

      Für mich ist zwar deprecated ≠ undefined, aber nunja…

      Für mich eigentlich auch (bzw. auch nicht), aber was will ich machen.

      Hier noch schnell eine Lösung für alle, die den Thread später mal im Archiv finden.

      // Welche Imagick Version habe ich?
      $v = Imagick::getVersion();
      preg_match('/ImageMagick ([0-9]+\.[0-9]+\.[0-9]+)/',$v['versionString'],$v);
      $myVers = explode(".",$v[1]);
      $myImagickVersion = $myVers[0];
      if ($myImagickVersion < 7) {
          $this->origSize = $this->imagickObject->getImageSize();
      } else {
          $this->origSize = $this->imagickObject->getImageLength();
      }
      

      Geht sicher noch etwas eleganter, aber hieraus kann sich jeder dann seine eigene Lösung basteln.

      Jörg