Ticket #2805 (closed defect (bug): fixed)

Opened 6 years ago

Last modified 13 months ago

Preserve PNG transparency/alpha during thumbnail creation

Reported by: Libertus Owned by: westi
Priority: high Milestone: 2.5
Component: Administration Version: 3.0.4
Severity: major Keywords:
Cc:

Description

PNG images with transparent backgrounds get thumbnails with black backgrounds. This patch to wp_create_thumbmail() fixes that.

Attachments

wp_create_thumbnail-preserve-PNG-transparency.diff Download (1.2 KB) - added by Libertus 6 years ago.
the patch
wp_create_thumbnail-preserve-PNG-transparency-ideal.diff Download (1.3 KB) - added by Libertus 6 years ago.
same patch but with function return value changed
2805.diff Download (757 bytes) - added by Otto42 5 years ago.
Simpler patch
test_pngs_8-32_bit.zip Download (18.7 KB) - added by bfred.it 13 months ago.
It contains 2 PNG files exported from Fireworks at 8bit and 32bit

Change History

My ideal patch incorporates the return value change I mention on #2682

same patch but with function return value changed

  • Status changed from new to closed
  • Resolution set to wontfix

No traction in almost a year, so closing as wontfix.

Feel free to re-open it if you have additional information/suggestions/patches/...

  • Status changed from closed to reopened
  • Resolution wontfix deleted

I really wish this will be fixed!! This is really sad that WP lost the transparency in the PNG... Why can't it be integrated into WP main code? I have to do and redo the modification at each update!! :-(

After the line 2294 of this file:  http://trac.wordpress.org/browser/tags/2.2.1/wp-admin/admin-functions.php add the following lines:

if ( ( $type[2] == 3) AND ( function_exists( 'imagesavealpha' ) ) ) {

imagesavealpha( $thumbnail, TRUE ); $trans_colour = imagecolorallocatealpha($thumbnail, 0, 0, 0, 127); imagefill($thumbnail, 0, 0, $trans_colour);

}

This code was taken from this documentation page:  http://fr.php.net/manual/en/function.imagecreatetruecolor.php

  • Milestone set to 2.4 (future)

Otto425 years ago

Simpler patch

  • Milestone changed from 2.4 (future) to 2.3 (trunk)

Uploaded a simpler patch which should do the trick for trunk. Somebody test it out.

This does need to be in trunk, IMO. Uploading transparent PNG files only to have it mangle their thumbnails is a pretty bad user experience. This is a simple patch that just sets some flags in the GD functions if those flags are available.

  • Keywords has-patch needs-testing added
  • Severity changed from normal to major

While I agree I would like to see this in 2.3.

It needs some testing before it can go in.

comment:7   ryan4 years ago

  • Priority changed from normal to high

If anybody else wants to test, a bunch of transparent png's to test with can be found here:  http://entropymine.com/jason/testbed/pngtrans/

  • Owner changed from anonymous to westi
  • Status changed from reopened to new
  • Status changed from new to closed
  • Resolution set to fixed

(In [6439]) Preserve PNG transparency/alpha during thumbnail creation. Fixes #2805 props Libertus/Otto42.

It contains 2 PNG files exported from Fireworks at 8bit and 32bit

  • Keywords has-patch needs-testing removed
  • Status changed from closed to reopened
  • Version changed from 2.1 to 3.0.4
  • Resolution fixed deleted

The solution doesn't work for 8 bit PNGs. I attached the two files I encountered the problem with, in a ZIP.

  • Status changed from reopened to closed
  • Resolution set to fixed

That's actually a problem with the GD library and also that 8-bit PNGs are palletized. No programmatic solution can create transparent 8-bit PNG files properly.

Use 24-bit PNGs if you want transparency to be preserved.

Note: See TracTickets for help on using tickets.