Regression using last version(s) of ImageMagick
Steve Allewell
steve.allewell at gmail.com
Sat Oct 13 19:42:32 BST 2018
On 13/10/2018 18:32, Sean Enck wrote:
> On 2018-10-13, Steve Allewell wrote:
>> On 12/10/2018 20:42, Sean Enck wrote:
>>> On 2018-10-08, Sean Enck wrote:
>>>> It appears importing an image has regressed (no longer works) against
>>>> kxstitch 2.1.1 when using the latest (well archlinux latest) versions of
>>>> image/libmagick. The current (not working version) in arch:
>>>>> imagemagick-7.0.8.12-1-x86_64.pkg.tar.xz
>>>>> libmagick-7.0.8.12-1-x86_64.pkg.tar.xz
>>>>
>>>> I downgraded my versions to verify and import worked (no crash):
>>>>> imagemagick-7.0.7.13-1-x86_64.pkg.tar.xz
>>>>> libmagick-7.0.7.13-1-x86_64.pkg.tar.xz
>>>>
>>>> The steps are:
>>>> 1. open kxstitch
>>>> 2. go to import image
>>>> 3. select an image (any image, I haven't seen it work)
>>>> 4. doesn't matter if you do anything before hitting "OK" when the image
>>>> would go to the normal grid
>>>> 5. full crash, can provide a trace if there is anything special in kxstitch
>>>> or any specific tracing method is preferred.
>>>>
>>>> Thanks for any help/insight,
>>>> --Sean
>>>
>>> I was able to do some digging and found the issue started around ImageMagick
>>> 7.0.7.24 (works) -> 7.0.7.25 (broken). I traced it to the FlossScheme.cpp
>>> color matching where nullptr was being returned and I patched this in
>>> Arch using the referenced patch below.
>>>
>>> https://aur.archlinux.org/cgit/aur.git/plain/0001-Change-nearest-color-lookup-logic-for-finding-floss-.patch?h=kxstitch
>>>
>> Hi Sean
>>
>> Apologies for not getting back to you earlier. I noticed you sent a
>> message to the list on the 8th, but it doesn't look like I got a copy of it.
>>
>> I have version 7.0.8 of ImageMagick too and confirm the bug.
>>
>> I had a look at the patch and it does the job, although it does not
>> require float for near and closest; abs and QColor red, green, blue
>> functions all return int.
>>
>> I did a little rewrite which works for me, please check it for yourself:
>> -------------------------------------------------------------------------------
>> Floss *FlossScheme::find(const QColor &color) const
>> {
>> QListIterator<Floss *> flossIterator(m_flosses);
>>
>> Floss *matched = nullptr;
>> int closest = 100;
>>
>> while (flossIterator.hasNext()) {
>> Floss *floss = flossIterator.next();
>> QColor c = floss->color();
>>
>> // the color mapping may not be perfect so search for a near match.
>> int distance = abs(color.red()-c.red()) +
>> abs(color.green()-c.green()) + abs(color.blue()-c.blue());
>>
>> if (distance < closest) {
>> matched = floss;
>> closest = distance;
>> }
>> }
>>
>> return matched;
>> }
>> -----------------------------------------------------------------------------
>>
>> Do you want to commit the change?
>>
>> I will have a look to see what changed in ImageMagic between those two
>> versions and see if there are any improvements to make.
>>
>> Regards
>>
>> Steve
>>
>
> Thanks for another set of eyes on it!
>
> I initially emailed (without troubleshooting more than what I put)
> because I didn't have the time until (days) later to look into the code.
> I'm not (generally) a C++ guy so I need a little extra time to try
> things (before realizing I could just use the call you had as a the
> criteria, I tried another which did require a float and didn't go back
> once I realized what you already had was an int approximation... I just
> needed to track it). I started trying to see what changed in ImageMagick
> but I have no idea what kxstitch uses from it so it was more of "where,
> in the code does this seem to be happening?"
>
> I applied your update locally and it appears to work just the same as my
> initial patch (aka bug still gone).
>
> Happy to commit the (joint) change, I wasn't sure what the process
> is/was? I initially used format-patch to try and bundle it fully as a
> consumable idea/be able to patch the arch packaging.
>
> --Sean
>
Sorry, I thought I had seen your name against a commit before, but after checking I realised I was mistaken. I know we have had a
number of emails in the past.
I will do the commit and credit you for the fix if that's ok.
I had a look at the ImageMagick code changes for 7.0.7-25 and there wasn't anything that stood out. I will have a look over the
kxstitch code and how it uses ImageMagick to see if I have made an error in that.
Thanks for all the efforts.
Steve
More information about the KXStitch
mailing list