imageresizer

Is there an issue with transparent png using WhitespaceTrimmer plugin


When I try to trim an image that has a transparent background using the WhitespaceTrimmer plugin i end up with a 3x3 image with nothing in it.

However when I save my source image in paint and the transparent background becomes a solid white background the WhitespaceTrimmer works great.

Am I doing anything wrong which would make the trimmer not function on my original image or is this some sort of bug or unsupported feature?

Original source:

Original Source

Output of original source (there is a 3x3 image there somewhere):

Output Of Original Source

Original image saved with a white background (using MS Paint):

Source Saved With White Background

Output of white background image:

Output Of White Background Image

Test Code used to output image through asp.net

    Response.Clear()

    Response.AppendHeader("Content-Disposition", "attachment; filename=testSigOutput.png")
    Response.ContentType = diFunctions.getContentType("png")

    ImageBuilder.Current.Build("C:\Solutions\TestImages\testSig.png", Response.OutputStream, New ResizeSettings("trim.threshold=80&trim.percentpadding=0.5"))
    Response.End()

Edit: I did some additional testing, I have come to the conclusion that when it converts the image to grayscale it is treating transparent pixels as black.

Regardless of what color I set the transparent background pixels to it will not work.

However if I change the pen color or make the background slightly visible (0.01 alpha) it works fine.

So the answer is I have a work around but is this working as intended?


Solution

  • WhitespaceTrimmer converts images to grayscale so that an energy filter can be applied. It's likely that your image turns into a black square when converted to grayscale. To test this, try making the figure in your image a different color (but still against a transparent background).

    Another possibility is that the transparent pixels in the image are of the same color, and thus the outline only exists in the alpha channel - which is not multiplied against the other channels.