Re: [GM-help] Mac OSX version of GM library produces very large JPEGs
Swiss army knife of image processing
Brought to you by:
bfriesen
From: Glenn L. <gl...@ai...> - 2013-01-29 23:48:58
|
On 29 January 2013 16:13, Bob Friesenhahn <bfr...@si...>wrote: > On Tue, 29 Jan 2013, Glenn Lawrence wrote: > >> ... >> > > The reference to "encode delegate" in the error message confused me, but >> I guess that it is reporting a delegates error >> because you could use a delegate rather than an in-built library to >> convert to JPEG if you wanted to, is that right? >> > > The use of the term 'delegate' is at least 12 years old and seems to apply > to any 3rd-party code regardless of it is a library or program. I did not > come up with this usage (John Cristy did). To improve my understanding of delegates.mgk, can you confirm that it only applies to external exes, or does it also apply to external libraries. This is just an academic question as I won't be using delegates.mgk for this project, but I'm interested to know how it all hangs together. > > > I'm trying to make this a self contained binary that will work even if >> the system already has a GraphicsMagick installed. >> Is there any chance that the delegates.mgk from an already installed >> GraphicsMagick would cause me problems? >> > > You may want to configure with --disable-installed, which allows the > software to be relocatable and it finds its location based on where the > program is, or the path value passed to InitializeMagick(). > > If you have any doubts, then run your software under the environment > > export MAGICK_DEBUG=configure > > and watch the tracing to see how it works. Done that, and yes it seems to be looking local to the binary and not in the usual installation dirs. > > > More generally, are there any suggestions you might make to protect my >> binary from an existing GraphicsMagick? >> > > Use a static build (except for standard system libraries) for maximum > protection. I read in http://www.graphicsmagick.org/INSTALL-unix.html that static builds are the default and I can see that there is a --enable-shared option for configure, but there is also mention in that document of a --disable-shared option, which I'm guessing might be a hangover from an earlier version. BTW I found that unlike Linux OSX does not have the 'ldd' command, but it does have a command called 'otool' which with the -L argument will list the shared libs of the given binary. Using this I was able to reassure myself that only the system libs were shared, which is what you would expect. For Windows builds you can use this tool http://dependencywalker.com/ > > I didn't fully appreciate that the config script actually removed >> functionality from GM if third party libraries weren't >> there so I didn't re-run it after installing libjpeg. I have done so now >> and that seems to have fixed the problem. >> > > Good. > > > But the odd thing was it converted to JPEG even though >> tile.magick("JPEG") was not called. >> > > It will also key off of the file extension. That would explain it. Thanks once again for your help Bob Glenn |