Jump to content

[GD]Anti-aliasing wegwerken?


Recommended Posts

Geplaatst: (bewerkt)

Ik heb een GD script die ik gebruik om teksten weer te geven in fonts die niet standaard in Windows zitten, maar deze werkt niet helemaal.

Dit script moet namelijk de witte achtergrond transparant maken (doet hij ook (imagecolortransparent)), maar, omdat de tekst anti-aliasing heeft, krijg ik de kleuren die net niet wit zijn ook in beeld. Dit is niet erg bij een lichte achtergrond, maar ik heb een plaats met een donkere achtergrond, en daar ziet dit er lelijk uit.

Mijn script:

<?php
if ($_GET['size'] == null) {
$size = 20;
} else {
$size = $_GET['size'];
$size += 0;
}
$im = imagecreate(591, ($size + (($size / 4) + 1)));
$tcolor = imagecolorallocate($im, 0, 0, 0);
if ($_GET['color'] != null) {
$tcolor = $_GET['color'];
$tcolor = explode(',', $tcolor);
$tcolor = imagecolorallocate($im, $tcolor[0], $tcolor[1], $tcolor[2]);
}
if ($_GET['text'] == null) {
$text = 'Undefined';
} else {
$text = $_GET['text'];
}
$fontsize = 20;

$transp = imagecolorallocate($im, 255, 255, 255);
$font = 'headertext.ttf';

imagefill($im, 0, 0, $transp);
imagecolortransparent($im, $transp);

imagettftext($im, $size, 0, 0, $size, $tcolor, $font, $text);

header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
?>

Ik weet het, het is niet zo mooi gescript, maar hij werkt wel.

Edit: Ik heb het al opgelost met een soortgelijk script:

<?php
if ($_GET['size'] == null) {
$size = 20;
} else {
$size = $_GET['size'];
$size += 0;
}
$im = imagecreatetruecolor(591, ($size + (($size / 4) + 1)));
$tcolor = imagecolorallocate($im, 0, 0, 0);
if ($_GET['color'] != null) {
$tcolor = $_GET['color'];
$tcolor = explode(',', $tcolor);
$tcolor = imagecolorallocate($im, $tcolor[0], $tcolor[1], $tcolor[2]);
}
if ($_GET['text'] == null) {
$text = 'Undefined';
} else {
$text = $_GET['text'];
}
$fontsize = 20;

$transp = imagecolorallocatealpha($im, 255, 0, 0, 127);
$font = 'headertext.ttf';

imagesavealpha($im, true);

imagefill($im, 0, 0, $transp);
imagecolortransparent($im, $transp);

imagettftext($im, $size, 0, 0, $size, $tcolor, $font, $text);

header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
?>

Bewerkt: door Donald F. Duck

Een reactie plaatsen

Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.

Gast
Op dit onderwerp reageren...

×   Je hebt text geplaatst met opmaak.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch ingevoegd.   In plaats daarvan weergeven als link

×   Je vorige bewerkingen zijn hersteld.   Alles verwijderen

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent actief   0 leden

    • Er zijn hier geen geregistreerde gebruikers aanwezig.
×
×
  • Create New...