imagemagick6 import issue
Sean Enck
enckse at voidedtech.com
Sun Nov 4 22:28:12 GMT 2018
On 2018-11-04, Sean Enck wrote:
> On 2018-11-04, Steve Allewell wrote:
> > On 03/11/2018 17:00, Sean Enck wrote:
> > > On 2018-11-03, Steve Allewell wrote:
> > >> On 02/11/2018 23:51, Sean Enck wrote:
> > >>> I was using kxstitch compiled against imagemagick V6 and it appears that
> > >>> image import doesn't work properly (running against the git head as
> > >>> we've already fixed the last issue). In V6 of imagemagick the import
> > >>> produces a completely black image. I bisected and was able to get to
> > >>> 295773f44bfda1227d85edf065a8de14dc889159 as the commit that caused the
> > >>> actual regression. The gist below is a partial revert where I was able
> > >>> to successfully import an image with colors (aka not all black).
> > >>>
> > >>> Again this only against imagemagick V6.
> > >>>
> > >>> Patch: https://gist.github.com/enckse/de74000c2fc41c3ceb90c97fa9693250
> > >>>
> > >>> --Sean
> > >>>
> > >> Hi Sean
> > >>
> > >> Thanks for that.
> > >>
> > >> The number of problems I have had keeping up with the changes in the Magick++ API, I have started looking at my own colour
> > >> reduction/mapping code to try and get away from using it.
> > >>
> > >> I'm not sure why the pixelColor function doesn't work in V6. It is available in the API and it should return the same value as in V7.
> > >>
> > >> The pixelColor code essentially does the same as your patch assuming the image is a DirectClass.
> > >> The PseudoClass is for indexed colour palettes.
> > >> -----------------------------
> > >> Magick::Color Magick::Image::pixelColor(const ssize_t x_, const ssize_t y_) const
> > >> {
> > >> ClassType
> > >> storage_class;
> > >>
> > >> storage_class=classType();
> > >> if (storage_class == DirectClass)
> > >> {
> > >> const PixelPacket
> > >> *pixel;
> > >>
> > >> pixel=getConstPixels(x_,y_,1,1);
> > >> if (pixel)
> > >> return(Color(*pixel));
> > >> }
> > >> else if (storage_class == PseudoClass)
> > >> {
> > >> const IndexPacket
> > >> *indexes;
> > >>
> > >> indexes=getConstIndexes();
> > >> if(indexes)
> > >> return(colorMap((size_t) *indexes));
> > >> }
> > >>
> > >> return(Color()); // invalid
> > >> }
> > >> -------------------------------
> > >>
> > >> I am going to build a virtual machine and try different versions of ImageMagick to see if I can resolve this.
> > >>
> > >> Regards
> > >>
> > >> Steve
> > >>
> > >
> > > Yeah I've definitely noticed the sprinkled "#if"'s around imagemagick
> > > items and assumed the API changes have been a pain. I figured you would
> > > probably have a better approach but I figured I could at least figure
> > > out some form of resolution to help point you in a direction and utilize
> > > the functionality if needed :)
> > >
> > > Let me know if I can be of any assistance (I'm pretty much on v6 for a
> > > while)
> > >
> > > --Sean
> > >
> > Hi Sean
> >
> > This doesn't appear to be a clear difference between V6 and V7. I have installed OpenSuSE 42.2 with Magick++ 6.8.8. With the
> > current code in git HEAD, importing images with and without transparency works as expected.
> >
> > Which version of ImageMagick do you have which fails? This will give me a bounding range of versions that I can check.
> >
> > Thanks
> >
> > Steve
>
> Hhmmm...running debian (unstable) in this case: 6.9.10-14
>
> I can try running in stable (against kxstitch head) which is 6.9.7-4 and
> confirm if the issue is still around (and help bound for you further) sometime
> later today/tomorrow (I'll have to rebuild kxstitch 2.1.1 which isn't hard I
> just have to setup the chroot/environment for it). There are _so many_
> releases that hopefully that can either get us between you (6.8.8) and stable
> or between stable (6.9.7-4) and unstable (6.9.10-14)
>
> I'll investigate on this end and let you know (I swear I saw this
> working with v6 a while ago on archlinux which would've been recent-ish
> as well at the time).
>
> --Sean
OK, stable (6.9.7-4) works properly during import. Just a tangent (maybe?)
but is there any chance that Qt (I don't know the kxstitch source and I'm
basically hoping asking you, Steve, as a quicker question) changed
something in color handling at all (e.g. in QColor?) - mainly I ask
because I know (for example) stable Qt is ~5.7 and unstable is ~5.11 and sort
of want to sanity check that thought. You probably have a better idea if it's
worth looking at other dependencies as possible root causes. I'd hate for
either of us to chase the wrong thing and/or keep partial fixing issues on
this.
Let me know if you have any thoughts on any of that. I'll hold off on trying
to track down various libraries and a lot of rebuilds until then :)
--Sean
More information about the KXStitch
mailing list