libvips / build-win64-mxe

73 stars 15 forks source link

Conversion to GIF does not work #29

Closed sergeevabc closed 3 years ago

sergeevabc commented 3 years ago

Sources: vips.exe, in.png

$ ver & vips --version
Microsoft Windows [Version 6.1.7601]    
vips-8.11.0-Wed Jun  9 18:20:35 UTC 2021

$ vips --vips-progress copy in.png out.tif
vips.exe temp-2: 162 x 192 pixels, 2 threads, 162 x 1 tiles, 128 lines in buffer 
vips.exe temp-2: done in 0,0366s                                                 

$ vips copy in.png out.gif
VipsForeignSave: "out.gif" is not a known file format
sergeevabc commented 3 years ago

Alright, I have found a stumbling block. In the past I extracted and used only the contents of \bin\ whereas the rest of the package turns out to be necessary as well. Could you tell me exactly which files should be moved to \bin\ to make the app work as expected? I don't want to lug all that dead weight such as \include\ and \lib\

$ vips --vips-progress copy in.png out.gif     
vips.exe temp-1: 162 x 192 pixels, 2 threads, 162 x 1 tiles, 128 lines in buffer 
vips.exe temp-1: done in 0,00799s                                                
kleisauke commented 3 years ago

Since v8.11.0 some dependencies were built as dynamic loadable module within the "all" variant:

PS> .\vips.exe --vips-config | Select-String "dynamic module: yes"
JXL load/save with libjxl: yes (dynamic module: yes)
PDF load with poppler-glib: yes (dynamic module: yes)
slide load with OpenSlide: yes (dynamic module: yes)
Magick package: MagickCore (dynamic module: yes)

gifsave is using ImageMagick, so you'll need to copy lib/vips-modules-8.11/vips-magick.dll with the directory structure being preserved. See the release notes for more information.

sergeevabc commented 3 years ago

Thank you, it works now. I see why modules are placed outside of bin from dev's pov, but from user's pov who wants portability that is a pain.

kleisauke commented 3 years ago

fwiw, the next version will probably place (and search for) the dynamic modules in the bin/vips-modules-[major].[minor] directory instead. See commit https://github.com/libvips/build-win64-mxe/commit/365870359dde8c7b971617d348ae8de41f5f690f for more info.