ImageEn for Delphi and C++ Builder ImageEn for Delphi and C++ Builder

 

ImageEn Forum
Profile    Join    Active Topics    Forum FAQ    Search this forumSearch
 All Forums
 ImageEn Library for Delphi, C++ and .Net
 ImageEn and IEvolution Support Forum
 Saving as webp using ImageMagick is causing low quality/artifacting

Note: You must be registered in order to post a reply.
To register, click here. Registration is FREE!

View 
UserName:
Password:
Format  Bold Italicized Underline  Align Left Centered Align Right  Horizontal Rule  Insert Hyperlink   Browse for an image to attach to your post Browse for a zip to attach to your post Insert Code  Insert Quote Insert List
   
Message 

 

Emoji
Smile [:)] Big Smile [:D] Cool [8D] Blush [:I]
Tongue [:P] Evil [):] Wink [;)] Black Eye [B)]
Frown [:(] Shocked [:0] Angry [:(!] Sleepy [|)]
Kisses [:X] Approve [^] Disapprove [V] Question [?]

 
Check here to subscribe to this topic.
   

T O P I C    R E V I E W
EricNat Posted - Oct 19 2022 : 23:07:52
When I save an image using ImageMagick from ImageEnView, I am getting a very low quality image with lots of artifacting.

For example:

Image->IO->SaveToStream(s,iomscWEBP);

I am loading ImageMagick with the plugin:

IEGlobalSettings()->RegisterPlugIns();

The image seems to load into ImageEnView ok, but when saving it is using very low quality.

Any ideas?

Thanks,
Eric
14   L A T E S T    R E P L I E S    (Newest First)
EricNat Posted - Sep 10 2023 : 22:51:58
That did it! Thanks so much.
xequte Posted - Sep 10 2023 : 19:13:46
Hi Eric

PNG only supports alpha when 32bit (24bit+Alpha), so you need to increase the color depth:

  IEGlobalSettings().AutoSetBitDepth := True;

  ImageEnView1.IO.LoadFromFile( 'D:\wepbtest.webp' );
  ImageEnView1.IEBitmap.PixelFormat := ie24RGB;
  ImageEnView1.IO.SaveToFile( 'D:\wepbtest.png' );


Nigel
Xequte Software
www.imageen.com
EricNat Posted - Sep 08 2023 : 18:26:27
Hi,

The latest versions are working properly when saving as WEBP format. However, we are still seeing artifacting when we open the WEBP image and then try to save it as a PNG. Is there some way around this or is this a bug?

Here is our code:

gImageMagickPath="\\webp test\\Win32\\Debug";
IEGlobalSettings()->RegisterPlugIns();
Image->IO->LoadFromFile("webptest.webp");
Image->IO->SaveToFile("test.webp",iomscWEBP);
Image->IO->SaveToFile("test.png",ioPNG);

Using the same image provided previously - the sheet icon with the letters PNG on it.

The test.webp looks great now. But when saved as PNG, it has the same artifacting that it had before.

Thank you,
Eric
xequte Posted - Dec 07 2022 : 22:23:18
Hi Eric

I've added support for ie1g and alpha channel in the current beta. Please email me for it.



Nigel
Xequte Software
www.imageen.com
EricNat Posted - Dec 07 2022 : 01:26:33
Hi Nigel,

I've updated to the latest 11.4.5.

Now, when opening the above webp test image, it opens fine.

However, when I go to save it, it is not saving properly. I've attached what I'm getting as the output. I am doing:

Image->IO->LoadFromFile("webptest.webp");
Image->IO->SaveToFile("test.webp",iomscWEBP);


attach/EricNat/202212712157_test.zip
30.56 KB

I am registering ImageMagick at startup with RegisterPlugIns();

Any idea what is causing that?

Thanks.
EricNat Posted - Nov 21 2022 : 22:34:19
Wonderful. Thank you!
xequte Posted - Nov 21 2022 : 22:31:40
Hi Eric

Yes, this will be fixed in our upcoming v11.4.5 (released in the next week or so).

Nigel
Xequte Software
www.imageen.com
EricNat Posted - Nov 21 2022 : 16:53:59
Hi, any update on this issue? Thanks!
EricNat Posted - Nov 11 2022 : 13:06:49
Thanks Nigel. Yes, I realized that I thought it was happening when it was being saved but it turns out the issue is happening when the webp file is being opened in ImageEnView. Sorry I didn't realize that earlier. Please let me know what you find out. Thank you!
xequte Posted - Nov 02 2022 : 20:18:00
Sorry, working with your original image (the source WebP) it looks like when loading the alpha channel is not supported for gray-scale WebP images like this. We will investigate.



Nigel
Xequte Software
www.imageen.com

xequte Posted - Nov 01 2022 : 21:16:43
Hi Eric

We are only passing the specified params to ImageMagick, so we cannot be sure what effect they have other than by testing it.

From my testing setting 'ImageMagick:Quality' does not have any discernible effect with WebP (I will update the documentation)

You are better to use the WebP parameters:

    ImageEnView1.IO.LoadFromFile('D:\Alpha_2.png');
    ImageEnView1.IO.Params.SetDefaultParams();
    ImageEnView1.IO.Params.Dict.Insert( 'ImageMagick', TIEDictionary.Create() );
    ImageEnView1.IO.Params.Dict.GetDictionary('ImageMagick').Insert( 'webp:lossless', Lossless );
    ImageEnView1.IO.Params.Dict.GetDictionary('ImageMagick').Insert( 'webp:method', Method );
    ImageEnView1.IO.SaveToFile('D:\'+outFN+'.webp');


Lossless=False, Method=6:



Lossless=False, Method=1:



Lossless=True:




It seems that Lossless gives worse quality than lossy here because the source contains anti-aliased (partially transparent) pixels.

I'm not seeing the low quality result that you are. Ensure that you do not have an old version of the ImageEn ImageMagick plug-in and/or ImageEn library.

Nigel
Xequte Software
www.imageen.com
EricNat Posted - Nov 01 2022 : 17:38:58
Here is the original webp file, if that is helpful at all.

attach/EricNat/2022111173848_wepbtest.zip
5.48 KB
EricNat Posted - Nov 01 2022 : 17:32:08
Unfortunately, I am still not having any progress with this after trying many different things.

One thing that is confusing is exactly how the dictionary entries are supposed to be defined. In a few places, they are defined like you have above. But in the Help files, it shows:

// Save a JPEG as WebP at 95% quality (using ImageMagick plug-in)
ImageEnView1.IO.LoadFromFile( 'D:\Image.jpg' );
ImageEnView1.IO.Params.Dict.Clear();
ImageEnView1.IO.Params.Dict.Insert( 'ImageMagick:Quality', 95 );
ImageEnView1.IO.SaveToFile( 'D:\Image_out.WebP' );


I have tried both ways, and neither seems to change the quality. Also, when I use the ImageMagick command line, the image looks good with the defaults (no parameters specified about quality, lossless, etc.). Shouldn't the plug in be using the same defaults?

Whenever I save from ImageEn as WEBP, it is degrading the quality substantially. Attached is an example. The first is the input and the second is what I'm getting on the save.

Any help would be greatly appreciated.

Thanks!
Eric

xequte Posted - Oct 20 2022 : 04:20:34
Hi Eric

Try specifying the WebP properties

// Save a PNG file as a lossless WebP with maximum compression
ImageEnView1.IO.SaveToFile('D:\Image.png');
ImageEnView1.IO.Params.Dict.Insert( 'ImageMagick', TIEDictionary.Create() );
ImageEnView1.IO.Params.Dict.GetDictionary('ImageMagick').Insert( 'webp:lossless', True );
ImageEnView1.IO.Params.Dict.GetDictionary('ImageMagick').Insert( 'webp:method', 6 );
ImageEnView1.IO.SaveToFile('D:\Image_out.webp');


They are defined at:
- http://imagemagick.org/script/webp.php
- http://imagemagick.org/script/defines.php



Nigel
Xequte Software
www.imageen.com