Background bij imagerotate
Ik heb een probleem:
Ik ben voor planemania.nl een script aan het maken, die weergeeft waar je vliegtuig op dit moment is.
Voorbeeld:
http://planemania.nl/line.php
Je ziet het waarschijnlijk al, het vliegtuigje heeft een zwarte en witte achtergrond.
Nu mijn vraag:
Is het mogelijk deze gewoon transparant te maken, zodat je op de achtergrond de landkaart ziet?
Ik hoop dat jullie het weten,
Lars
EDIT:
Hmmm, ik weet trouwens niet of je dan helemaal van het probleem af bent. Waarschijnlijk zal je dan alsnog zwarte gedeeltes krijgen op de plaats waar eerst het vliegtuig zat, maar je kunt het proberen. Ik zie ook nu pas wat je precies bedoelt. Ik dat dat het gewoon een rare afbeelding was, maar het gedeelte dat ie roteert wordt zwart gemaakt. Vaag...
Gewijzigd op 02/08/2010 13:48:22 door The Ultimate
Ik denk dat je ook aan moet geven wat transparant is, de transparante kleur aangeven in de PNG of GIF. Meestal is dat wit. Aanpassen dus van het PNG of GIFje
Het is nu in .PNG formaat, zelfde probleem.
@John D,
Hoe bedoel je?
Ik gebruik btw. Paint.NET.
Dit is de PHP code die ik gebruik:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
header("Content-type: image/png");
$dest = imagecreatefrompng('http://planemania.nl/nl1/images/kaart.png');
$src = imagecreatefrompng('http://planemania.nl/nl1/images/planeicon.png');
//$srctransparent = imagecolortransparent($src);
$red = imagecolorallocate($dest, 255, 0, 0);
$degrees = -127;
imageline($dest, 208, 95, 244, 124, $red);
$src2 = imagerotate($src, $degrees, 0, 0);
imagecopy($dest, $src2, 214, 98, 0, 0, 24, 24);
imagepng($dest);
imagedestroy($dest);
?>
header("Content-type: image/png");
$dest = imagecreatefrompng('http://planemania.nl/nl1/images/kaart.png');
$src = imagecreatefrompng('http://planemania.nl/nl1/images/planeicon.png');
//$srctransparent = imagecolortransparent($src);
$red = imagecolorallocate($dest, 255, 0, 0);
$degrees = -127;
imageline($dest, 208, 95, 244, 124, $red);
$src2 = imagerotate($src, $degrees, 0, 0);
imagecopy($dest, $src2, 214, 98, 0, 0, 24, 24);
imagepng($dest);
imagedestroy($dest);
?>
Bedankt alvast,
Lars
Je moet dan natuurlijk wel even het 'wit' om het vliegtuigje weghalen anders dan heeft het alsnog geen zin. Kijkt u eens: http://www.clker.com/clipart-6899.html
http://planemania.nl/nl1/images/planeicon.png
Kijk maar eens, en open maar eens in PS / Paint.NET, dan zul je zien dat het wel degelijk transparant is ;)
Lars
Dit kwam ik ergens tegen:
$transparent = imagecolorallocatealpha($destination_handle, 255, 255, 255, 0);
imagealphablending($destination_handle, false);
imagesavealpha($destination_handle,true);
Saw this on another forum.. should help you. Just provide the RGB values in the first line for the color you want to make transparent. Oh and replace $destination_handle with the variable that is holding your image handle. ($var = imagecreate() or whatever)
En vergeet niet: Google is je vriend:
http://www.google.nl/#hl=nl&source=hp&q=php+imagerotate+transparent+background&aq=3&aqi=g1g-s1g5&aql=&oq=php+imager&gs_rfai=&fp=29d7fadb010ccc72
http://planemania.nl/line.php
Je ziet helaas nog wel wat zwarte vlakjes er tussen door, maar daar kan ik volgens mij niks meer aan doen.
Dit is me huidige script:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
header("Content-type: image/gif");
$dest = imagecreatefromgif('http://planemania.nl/nl1/images/kaart.gif');
$src = imagecreatefromgif('http://planemania.nl/nl1/images/planeicon_16.gif');
$srctransparent = imagecolortransparent($src, imagecolorallocate($src, 0, 0, 0));
$red = imagecolorallocate($dest, 255, 0, 0);
$degrees = -85;
imageline($dest, 208, 95, 244, 124, $red);
$src2 = imagerotate($src, $degrees, $srctransparent, 0);
imagecolortransparent($src2, imagecolorallocate($src2, 0, 0, 0));
imagecopymerge($dest, $src2, 218, 102, 0, 0, 24, 24, 100);
imagegif($dest);
imagedestroy($dest);
?>
header("Content-type: image/gif");
$dest = imagecreatefromgif('http://planemania.nl/nl1/images/kaart.gif');
$src = imagecreatefromgif('http://planemania.nl/nl1/images/planeicon_16.gif');
$srctransparent = imagecolortransparent($src, imagecolorallocate($src, 0, 0, 0));
$red = imagecolorallocate($dest, 255, 0, 0);
$degrees = -85;
imageline($dest, 208, 95, 244, 124, $red);
$src2 = imagerotate($src, $degrees, $srctransparent, 0);
imagecolortransparent($src2, imagecolorallocate($src2, 0, 0, 0));
imagecopymerge($dest, $src2, 218, 102, 0, 0, 24, 24, 100);
imagegif($dest);
imagedestroy($dest);
?>
Dan nu even een hele andere vraag:
Dit script is voor mijn spel, en daar voor heb ik het volgende nodig:
Ik wil graag een live overzicht van waar je vliegtuig op dat moment is.
Ik weet de vertrektijd (in een Datetime in de MySQL) en ik weet de totale vliegtijd (in seconden).
Dit vliegtijd is heen en terug, dus de helft ervan is alleen heen.
Dus als je bijvoorbeeld om 10:00 vertrekt, en het duurt 4800 seconden (= 2 uur) dan is hij dus om 11:00 op bijv. Antalya, en om 12:00 bij Amsterdam.
En ik weet uiteraard het aantal kilometers, en de coordinaten van de vertrekplaats en aankomstplaats.
Hoe kan ik dan uitrekenen op welke coordinaat X en op welke coordinaat Y hij is?
Ik hoop dat jullie het weten,
Lars
P.S.
Dit is inderdaad meer Wiskunde dan PHP :)