Imagick / imagick

🌈 The Imagick PHP extension 🌈
http://pecl.php.net/imagick
Other
535 stars 135 forks source link

VC16 build for windows pecl #573

Open N6REJ opened 1 year ago

N6REJ commented 1 year ago

I'm looking for an updated build for https://windows.php.net/downloads/pecl/deps/ImageMagick-7.1.0-18-vc15-x86.zip that uses vc16 & x64. Where can I find such a thing or create one?

terax6669 commented 1 year ago

8.2.1 is around the corner and still no build :C I've been waiting for weeks... I found this: https://wiki.php.net/internals/windows/stepbystepbuild if you manage to build a DLL before one appears on pecl please share.

Danack commented 1 year ago

@terax6669 wrote:

:C

What does ":C" mean? I don't speak emoji.

Danack commented 1 year ago

@N6REJ I've actually never been involved in building any extensions for Windows, and I'm not a Windows user.

Reading the front page of https://windows.php.net/ I can see:

Missing PECL DLLs 17 Oct 2022

You may have already noticed that DLLs for new PECL releases are no longer available for several months. This is because the Windows PECL build machine died, and the team is still working on the long term plan of building DLLs for PECL extensions with a new CI process. We're doing our best to finish that as soon as possible, and keep you up to date.

Which is certainly unfortunate.

I will try to find out what the situation is. For the record, I personally think getting the windows builds available again is something that would be appropriate for the PHP Foundation to be hiring someone to work on full time.

N6REJ commented 1 year ago

it would be great if you could expedite it. We've got every version of imagemick since php 8.0 not working because of it.

N6REJ commented 1 year ago

if you want, teach me how to do it and i'll make the imagick ones myself

Danack commented 1 year ago

if you want, teach me how to do it and i'll make the imagick ones myself

I don't know, I've never compiled Imagick on windows.

If anyone wants to write some instructions, I could host them on phpimagick.com

btw, https://mlocati.github.io/articles/php-windows-imagick.html exists and may be of help to some people.

tmb-github commented 1 year ago

Sigh, the latest version provided on that page, for 8.1, doesn't work for 8.2. Using PHP 8.2 and following those instructions for 8.1, I get the expected mismatch error:

[29-Dec-2022 17:35:22 UTC] PHP Warning: PHP Startup: imagick: Unable to initialize module Module compiled with module API=20210902 PHP compiled with module API=20220829 These options need to match in Unknown on line 0

WilliamStam commented 1 year ago

thanks @Danack for all your work. waiting patiently for that server to come up hehe

terax6669 commented 1 year ago

Any update on this?

fedot199614 commented 1 year ago

Any update on this?

ArthurPatriot commented 1 year ago

Success BUILD for Windows! Test on your own risk. Left messages here if it works.

PHP 8.2.3 x64 TS + NTS

ext-imagick-php8.2-ts-x64.zip ext-imagick-php8.2-nts-x64.zip

N6REJ commented 1 year ago

Thats fantastic!

fedot199614 commented 1 year ago

what about nts?

Success BUILD for Windows! Test on your own risk. Left messages here if it works.

PHP 8.2.3 x64 TS

ext-imagick-php8.2-ts-x64.zip

greate, but what about nts?

ArthurPatriot commented 1 year ago

I had to go through 9 rings of hell to make this build without any instructions or tips... If you really need it, I can make another build, for NTS...) You can download here - https://github.com/Imagick/imagick/issues/573#issuecomment-1431773928

fedot199614 commented 1 year ago

I had to go through 9 rings of hell to make this build without any instructions or tips... If you really need it, I can make another build, for NTS...) You can download here - #573 (comment)

thanks so much. Will try your build. Also found this great guide and planning use it https://jite.eu/_posts/2021-02-21-imagick-on-php8/

UPD: works for me, thx

tmb-github commented 1 year ago

The thread-safe version (the one I need) will not work on my system (Win11, XAMPP, with PHP 8.2). I suspect it's because the version of ImageMagick I have installed locally (ImageMagick-7.1.0-18-vc15-x64/ImageMagick 7.1.0-18 Q16 x64) is different than the version the builds above were compiled against.

@ArthurPatriot, which version of ImageMagick did you compile those builds against?

ArthurPatriot commented 1 year ago

The thread-safe version (the one I need) will not work on my system (Win11, XAMPP, with PHP 8.2). I suspect it's because the version of ImageMagick I have installed locally (ImageMagick-7.1.0-18-vc15-x64/ImageMagick 7.1.0-18 Q16 x64) is different than the version the builds above were compiled against.

@ArthurPatriot, which version of ImageMagick did you compile those builds against?

All libraries included on zip. You can use latest version of Imagick for Windows.

tmb-github commented 1 year ago

@ArthurPatriot Which version of ImageMagick is installed on the machine where you compiled Imagick?

ArthurPatriot commented 1 year ago

@ArthurPatriot Which version of ImageMagick is installed on the machine where you compiled Imagick?

All required libraries exists in zip. ImageMagick-7.1.0-62-Q16-HDRI-x64

tmb-github commented 1 year ago

@ArthurPatriot Success! Thanks so much!!!

pro81723 commented 1 year ago

Is this working for Debian Linux? php 8.2

ArthurPatriot commented 1 year ago

@pro81723

sudo add-apt-repository ppa:ondrej/php sudo apt update sudo apt install php8.2-imagick

Rentner2 commented 1 year ago

Success BUILD for Windows! Test on your own risk. Left messages here if it works.

PHP 8.2.3 x64 TS + NTS

ext-imagick-php8.2-ts-x64.zip ext-imagick-php8.2-nts-x64.zip

PHP 8.2.3 x64 TS

Works for me, W11 + XAMPP with PHP 8.2, Thanks!

Qara-Penimah commented 1 year ago

Is there an official release?

N6REJ commented 1 year ago

when I compare the ts to whats on pecl repo there is a LOT missing. I'm unsure what to do.

WilliamStam commented 1 year ago

it works for everything i need it to do. doesnt error out. are there any issues with the differences? otherwise i wouldnt worry too much i think

edit: NTS here so that might be less of an issue than TS version i suppose

ArthurPatriot commented 1 year ago

TS here so that might be less of an issue than TS version i suppose

all must works

Asmitta-01 commented 1 year ago

Success BUILD for Windows! Test on your own risk. Left messages here if it works.

PHP 8.2.3 x64 TS + NTS

ext-imagick-php8.2-ts-x64.zip ext-imagick-php8.2-nts-x64.zip

It appears in the "php -m" result but not in the phpinfo.

PS C:\xampp\htdocs\...> php  --ri imagick

imagick

imagick module => enabled
imagick module version => @PACKAGE_VERSION@
imagick classes => Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator, ImagickKernel
Imagick compiled with ImageMagick version => ImageMagick 7.1.0-62 Q16-HDRI x64 32ce406:20230212 https://imagemagick.org
Imagick using ImageMagick library version => ImageMagick 7.1.0-62 Q16-HDRI x64 32ce406:20230212 https://imagemagick.org
ImageMagick copyright => (C) 1999 ImageMagick Studio LLC
ImageMagick release date => 2023-02-12
ImageMagick number of supported formats:  => 0

Directive => Local Value => Master Value
imagick.locale_fix => 0 => 0
imagick.skip_version_check => 0 => 0
imagick.progress_monitor => 0 => 0
imagick.set_single_thread => 1 => 1
imagick.shutdown_sleep_count => 10 => 10
imagick.allow_zero_dimension_images => 0 => 0
ELFswe commented 1 year ago

@ArthurPatriot Any possibillity of a lighter guide for wich rings of hell you went through to build this?

ArthurPatriot commented 1 year ago

@ArthurPatriot Any possibillity of a lighter guide for wich rings of hell you went through to build this?

In fact, it is difficult only the first time... Once you have everything figured out, it is done in a few minutes...

jamesjohnmcguire commented 1 year ago

@ArthurPatriot Would it possible to publish some notes on how to build this? Even if general, could be helpful. But detailed, step by step, instructions, or even a build script would be great!

For those of who also want to build our own.

fmonts commented 1 year ago

ImageMagick number of supported formats: => 0

I have the same problem with 0 supported formats, on multiple machines... anybody managed to fix this?

What is odd is that on some pcs we have this, which is working:

image

And on other this, which apparently looks better because the two versions match, but it's not working:

image

fmonts commented 1 year ago

I found a working solution:

so:

Tested this setup on 3 machines in our team, on both windows 10 and windows 11

If set correctly, you'll have 263 supported formats:

PS C:\> php  --ri imagick

imagick

imagick module => enabled
imagick module version => @PACKAGE_VERSION@
imagick classes => Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator, ImagickKernel
Imagick compiled with ImageMagick version => ImageMagick 7.1.0-62 Q16-HDRI x64 32ce406:20230212 https://imagemagick.org
Imagick using ImageMagick library version => ImageMagick 7.1.0-18 Q16 x64 2021-12-14 https://imagemagick.org
ImageMagick copyright => (C) 1999-2021 ImageMagick Studio LLC
ImageMagick release date => 2021-12-14
ImageMagick number of supported formats:  => 263
ImageMagick supported formats => 3FR, 3G2, 3GP, AAI, AI, APNG, ART, ARW, ASHLAR, AVI, AVIF, AVS, BGR, BGRA, BGRO, BIE, BMP, BMP2, BMP3, BRF, CAL, CALS, CANVAS, CAPTION, CIN, CIP, CLIP, CLIPBOARD, CMYK, CMYKA, CR2, CR3, CRW, CUBE, CUR, CUT, DATA, DCM, DCR, DCRAW, DCX, DDS, DFONT, DJVU, DNG, DOT, DPS, DPX, DXT1, DXT5, EMF, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, ERF, EXR, FARBFELD, FAX, FF, FILE, FITS, FL32, FLIF, FLV, FPX, FRACTAL, FTP, FTS, G3, G4, GIF, GIF87, GRADIENT, GRAY, GRAYA, GROUP4, GV, HALD, HDR, HEIC, HEIF, HISTOGRAM, HRZ, HTM, HTML, HTTP, HTTPS, ICB, ICO, ICON, IIQ, INFO, INLINE, IPL, ISOBRL, ISOBRL6, J2C, J2K, JBG, JBIG, JNG, JNX, JP2, JPC, JPE, JPEG, JPG, JPM, JPS, JPT, JSON, JXL, K25, KDC, KERNEL, LABEL, M2V, M4V, MAC, MAP, MASK, MAT, MATTE, MEF, MIFF, MKV, MNG, MONO, MOV, MP4, MPC, MPEG, MPG, MRW, MSL, MSVG, MTV, MVG, NEF, NRW, NULL, ORA, ORF, OTB, OTF, PAL, PALM, PAM, PANGO, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PDFA, PEF, PES, PFA, PFB, PFM, PGM, PGX, PHM, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG00, PNG24, PNG32, PNG48, PNG64, PNG8, PNM, POCKETMOD, PPM, PS, PS2, PS3, PSB, PSD, PTIF, PWP, RADIAL-GRADIENT, RAF, RAS, RAW, RGB, RGB565, RGBA, RGBO, RGF, RLA, RLE, RMF, RSVG, RW2, SCR, SCREENSHOT, SCT, SFW, SGI, SHTML, SIX, SIXEL, SPARSE-COLOR, SR2, SRF, STEGANO, SUN, SVG, SVGZ, TEXT, TGA, THUMBNAIL, TIFF, TIFF64, TILE, TIM, TM2, TTC, TTF, TXT, UBRL, UBRL6, UIL, UYVY, VDA, VICAR, VID, VIFF, VIPS, VST, WBMP, WEBM, WEBP, WMF, WMV, WPG, X3F, XBM, XC, XCF, XPM, XPS, XV, YAML, YCbCr, YCbCrA, YUV
N6REJ commented 1 year ago

can we get this into a working windows zip like the existing?

N6REJ commented 1 year ago

how about we get an "official" fork so we can keep up to date instead of a long thread

Nomad862 commented 1 year ago

bonjour à tous, pour le problème de imagick j'ai trouvé la solution après plusieurs essaie et recherche. Voila de 1 je ne suis ni dévelloppeur ni programmeur et je n'est aucune connaissance ni en dévellopement ni dans les codes mais je ne suis pas con hhhhhhhh de 2 je travail sur XAMPP pour info en ce qui concerne la version PHP elle est de 8.2 J'ai commencer par installe l'application "ImageMagick-7.1.1-12-Q16-HDRI-x64-dll" dans mon systeme Ensuite j'ai télécharger la derniere version de php image magick "php_imagick-3.7.0-8.1-ts-vs16-x64" ou "php_imagick-3.7.0-8.1-nts-vs16-x64" et j'ai extrait les fichiers afin d'avoir le dossier concernant Apres j'ai copie le fichier "phpimagick.dll" dans le dossier XAMPP/php/ext ensuite j'ai copie tous les fichiers qui commence par "CORE........_.dll" et les fichiers "IMMOD......._.dll" dans le dossier XAMPP/Apache/bin enfin j'ai copié le fichier "extension=php_imagick.dll" sans la virgule avec point dans le fichier PHP.INI au dessus des extension ";extension=pgsql /// ;extension=shmop" Ca na pas fonctionner, mais quand j'ai ajouter le fichier "extension=php_gd2.dll" dans le fichier PHP.INI ça à fonctionner je n'est plus le message du probleme du imagick ni du GD si ça ne fonctionne pas vérifier si le fichier "php_gd.dll" existe dans le dossier XAMPP/apache/bin si oui je suis désolé que ça ne marche pas pour vous si non copie "php_gd.dll" dans le fichier XAMPP/apache/bin

Enfin après consultation dans php info () dans localhost j'ai pu avoir le tableau de imagick

bon courage à tous et je m'excuse pour les fautes d'orthographe ou de conjugaison ou de grammaire mais l'important c'est que le message soit bien transmis.

ferrisbuellers commented 1 year ago

What's holding this up from being officially released on Windows PHP8.2?

ELFswe commented 1 year ago

What's holding this up from being officially released on Windows PHP8.2?

There has never really been any official releases for Windows. https://github.com/Imagick/imagick/issues/573#issuecomment-1353609195

terax6669 commented 1 year ago

There has never really been any official releases for Windows.

The DLLs are available for download on https://pecl.php.net/package/imagick, does it get more official than that?

WilliamStam commented 1 year ago

The DLLs are available for download on https://pecl.php.net/package/imagick, does it get more official than that?

the issue here is that https://pecl.php.net/package/imagick/3.7.0/windows only has for php 8.1. and the dll doesnt work on php 8.2. so a rather weird post.

ArthurPatriot commented 1 year ago

The DLLs are available for download on https://pecl.php.net/package/imagick, does it get more official than that?

the issue here is that https://pecl.php.net/package/imagick/3.7.0/windows only has for php 8.1. and the dll doesnt work on php 8.2. so a rather weird post.

https://github.com/Imagick/imagick/issues/573#issuecomment-1431773928

WilliamStam commented 1 year ago

#573 (comment)

im already using that and it works perfectly :D my comment was aimed at the person that said that pecl = official, was just commenting that there arent any php 8.2 dlls there so nothing "official" in this case

edit: and im being a dumba**. i just re read it all and the person was referring to "there once apon a 8.1 and earlier time was an official download of dlls" instead of "go here for the official dlls" sorry person :(

EusebiuOprinoiu commented 1 year ago

I might be wrong about this, but I believe the Windows builds are generated automatically by PECL. Unfortunately, the latest push to PECL was made 1.5 years ago, when PHP 8.2 didn't exist.

Perhaps Danack could release a new version, which hopefully will trigger the build script for Windows. (and maybe add support for ImageMagik 7 as well)

Danack commented 1 year ago

but I believe the Windows builds are generated automatically by PECL.

No, the box died, and previously it was sponsored by Microsoft. Microsoft pulled out of helping the PHP project. So there is nothing I can do myself. Setting up a new box, and being the one responsible for fixing it when it breaks, and taking care of security for both the box and the builds would be a huge responsibility.

The PHP core team is really low on members, and it's 'not obvious' that getting volunteers to step in to support an OS after the company selling it drops contributing, is the right thing to do.

EusebiuOprinoiu commented 1 year ago

That's disappointing. I remember seeing an announcement about the build box dying about a year ago, but I thought it was fixed. At least the Linux version works with all PHP versions, even though it's a bit old.

Will you be able to release a new version compiled with ImageMagick 7 in the near future? To be clear, I'm asking about the Linux version available via PECL which is used by many install scripts.

ArthurPatriot commented 1 year ago

That's disappointing. I remember seeing an announcement about the build box dying about a year ago, but I thought it was fixed. At least the Linux version works with all PHP versions, even though it's a bit old.

Will you be able to release a new version compiled with ImageMagick 7 in the near future? To be clear, I'm asking about the Linux version available via PECL which is used by many install scripts.

This issue about Windows build. Linux versions working well.

My Windows build using Imagick 7.1.0

EusebiuOprinoiu commented 1 year ago

This issue about Windows build. Linux versions working well.

I know. Sorry! I didn't mean to hijack this thread. I will open a separate ticket.

mcbmcb0 commented 1 year ago

as this appears to be the current windows php 8.2 thread... I running php 8.2.4 on win 10 (xampp) and doing this as suggested by @fmonts: in ext/, put the .dll for 8.2 in bin/ (or whatever folder you added to windows Path), put the binaries for 8.1 then php --ri imagick shows imagick module enabled and 263 supported formats. But the xampp apache service says php_imagick.dll is not found. It is there and I've tried locating it from php.ini in a number of ways. can someone confirm if they have got this running on windows with php 8.2.4 with Apache 2.4.56? thanks

EDIT: I translated the comment from @Nomad862 above and so also copied the 8.1 CORE_.........dll" and the "IMMOD........dll" files into the XAMPP/Apache/bin folder. They are also in ..xampp/php/ Imagick now appears to work with apache / php 8.2.4 / win 10. i'm not sure if my installation was somehow broken or some other problem, but problem appears solved

adamperrry commented 1 year ago

@ArthurPatriot

I've noticed the module version is coming back as @PACKAGE_VERSION@, which is breaking PDF previews in Wordpress media uploads, because the class-wp-image-editor-imagick.php class has a test() function that contains:

        if ( version_compare( phpversion( 'imagick' ), '2.2.0', '<' ) ) {
            return false;
        }

I've got the 8.1 ImageMagick binaries, so everything is configured and working correctly, except the version. Is this an issue with the compilation process?

$ php --ri imagick

imagick

imagick module => enabled
imagick module version => @PACKAGE_VERSION@
imagick classes => Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator, ImagickKernel
Imagick compiled with ImageMagick version => ImageMagick 7.1.0-62 Q16-HDRI x64 32ce406:20230212 https://imagemagick.org
Imagick using ImageMagick library version => ImageMagick 7.1.0-18 Q16 x64 2021-12-14 https://imagemagick.org
ImageMagick copyright => (C) 1999-2021 ImageMagick Studio LLC
ImageMagick release date => 2021-12-14
ImageMagick number of supported formats:  => 263
ArthurPatriot commented 1 year ago

@ArthurPatriot

I've noticed the module version is coming back as @PACKAGE_VERSION@, which is breaking PDF previews in Wordpress media uploads, because the class-wp-image-editor-imagick.php class has a test() function that contains:

      if ( version_compare( phpversion( 'imagick' ), '2.2.0', '<' ) ) {
          return false;
      }

I've got the 8.1 ImageMagick binaries, so everything is configured and working correctly, except the version. Is this an issue with the compilation process?

$ php --ri imagick

imagick

imagick module => enabled
imagick module version => @PACKAGE_VERSION@
imagick classes => Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator, ImagickKernel
Imagick compiled with ImageMagick version => ImageMagick 7.1.0-62 Q16-HDRI x64 32ce406:20230212 https://imagemagick.org
Imagick using ImageMagick library version => ImageMagick 7.1.0-18 Q16 x64 2021-12-14 https://imagemagick.org
ImageMagick copyright => (C) 1999-2021 ImageMagick Studio LLC
ImageMagick release date => 2021-12-14
ImageMagick number of supported formats:  => 263

To fix this issue extension must be rebuilded with filled module version...