#1349·image

drawLine() ignores transparent colors with GD <= 2.1.0

Author: olivervogelCreated May 5, 2024Updated Jun 26, 2024

Describe the bug

The drawLine() function ignores a transparent color and draws the line completely opaque. #ffffff44 for example is drawn as #ffffffff.

The erroneous output was observed with GD version bundled (2.1.0 compatible), which is now about 8 years old and no longer supported. However, it still seems to be unfortunately present in many installations. For example, a recent official PHP 8.3 Docker image still contains this old version.

With a setup with the same version the line width is also ignored. See #1304

There were no problems with current GD versions (e.g. 2.3.3).

Code Example

php
$image = $manager
    ->create(500, 500)
    ->fill('ff5500')
    ->drawLine(function (LineFactory $line) {
        $line->color('fff4'); // transparency!
        $line->from(100, 100);
        $line->to(400, 100);
    });

Expected behavior

Function should draw line (half) transparent according to given color.

Environment

  • PHP Version: 8.1
  • OS: Debian
  • Intervention Image Version: 3.6.3
  • GD or Imagick: GD bundled (2.1.0 compatible)