webForumDet fria alternativet

Skriva text

4 svar · 251 visningar · startad av Type

TypeMedlem sedan mars 20021 239 inlägg
#1

Hejsan!
Jag tänkte skriva lite text till en bild med hjälp av imagettftext().

Allt funkar krockrent och jag får ut text precis som jag ska...
Nu till mitt problem...

Jag ska kunna lägga upp bilder och använda en speciell font som skriver ut "Publicerad: 2005-01-11". Denna text har jag innan gjort i Fireworks och fått till precis exakt som jag vill ha den... Tyvärr tror jag inte att det går att få till med php men motbevisa mig gärna!

Jag har lagt till en mjuk toning på texten, och det är där skillnaden ligger tror jag... Texten jag skriver in med hjälp av php blir mycket kantigare och inte alls lika mjuk o fin som den andra ;)

Finns det någon möjlighet att lägga till "toning" på texten i php eller är det helkört?

Vad är då bästa lösningen (om det inte går)? Att för varje bild skriva in text i fireworks gör jag helst inte.. är det bättre att skapa 10 bilder som heter 0.gif, 1.gif, 2.gif osv och hämta datumet och sen splitta upp det och ta varje siffra och ersätta med dess bild?

TypeMedlem sedan mars 20021 239 inlägg
#2

Exempel på hur texten ska se ut:

/RED
Nu har jag kommit på värsta grejen! Om jag har alla bilder som 0,1,2,3,4,5,6,7,8,9,- så kan jag kanske fixa ihop datumet till en ända bild ändå? Dvs ta en 2.gif, två 0.gif och en 5.gif för att skriva ut detta året... sen får jag ta alla de bilderna och packa ihop till en bild som jag döper till något annat... går det? hjääälp behöver jag ;)

pub_geting.gif
PeddaMedlem sedan juni 20006 032 inlägg
#3

Matte har ett exempel här som är bra.
Har aldrig testat toning och grejor men att göra en skugga t.ex är ju inga problem.

TypeMedlem sedan mars 20021 239 inlägg
#4

Pedda, jo, det har jag sett förut.. dock borde mitt problem ändå bestå... Jag skrev att jag redan fått ut text på en bild o det fungerar... däremot vill jag inte ha så hårda kanter... o de lär bestå, även om man kan lägga skugga.. väl?

TypeMedlem sedan mars 20021 239 inlägg
#5

Nu har jag löst det! Jag använder mig av bilder för alla siffror och bindestreck. Dessa bilder har jag gjort i fireworks... Sen hämtar jag datum och ersätter datumet med dessa bilder. Fungerar klockrent (tror jag).
Jag är urstolt... att jag fick ihop det själv! Det trodde jag aldrig ;) Kom gärna med synpunkter på förbättringar eller problem...

//  - FUNKTIONER -
function getWidth($img){
	return imagesx($img);
}

function getHeight($img){
	return imagesy($img);
}

function copyImage($dst_im,$src_im,$dst_x,$dst_y,$src_x,$src_y,$src_w,$src_h){
 	//int imagecopy ( resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h)
	imagecopy($dst_im,$src_im,$dst_x,$dst_y,$src_x,$src_y,$src_w,$src_h);
	return $dst_x+$src_w; // returnerar nästa pos-x
}

function createImageFromDate($datestr){
	$date_nextpos=0; // var vi ska börja i x-led för img_date.
	 		
	//  - INITIERA SÖKVÄGAR OCH BILDER -
	$link = "numbers/";
	$imgnumbers = array(	imagecreatefromgif($link."0.gif"),
												imagecreatefromgif($link."1.gif"),
												imagecreatefromgif($link."2.gif"),
												imagecreatefromgif($link."3.gif"),
			 									imagecreatefromgif($link."4.gif"),
			 									imagecreatefromgif($link."5.gif"),
			 									imagecreatefromgif($link."6.gif"),
			 									imagecreatefromgif($link."7.gif"),
			 									imagecreatefromgif($link."8.gif"),
			 									imagecreatefromgif($link."9.gif")   );
	
	$img_b = imagecreatefromgif($link."-.gif");           // $img_b är bilden för bindestreck!!!
	
	$img_date = imagecreate(115,19);
	
	for($i=0;$i<strlen($datestr);$i++){
		if($datestr[$i]=="-")
			$date_nextpos = copyImage($img_date,$img_b,$date_nextpos,0,0,0,getWidth($img_b),getHeight($img_b));
		else
			$date_nextpos = copyImage($img_date,$imgnumbers[$datestr[$i]],$date_nextpos,0,0,0,getWidth($imgnumbers[$datestr[$i]]),getHeight($imgnumbers[$datestr[$i]]));
	}
	
	// returnerar en bild som består av datumet vi skickat in ($datestr).
	return $img_date;
}

$nextpos = 0; // vi startar på x-pos = 0

//basbilden som sedan blir "Publicerad: 2005-01-11", 200px i x-led och 19px i y-led
$img = imagecreate(210,19); 

// skapar de övriga bilderna som ska användas.
$img_pub = imagecreatefromgif("numbers/pub.gif");

// här lägger vi till "Publicerad:" till bild $img
$nextpos = copyImage($img,$img_pub,$nextpos,0,0,0,getWidth($img_pub),getHeight($img_pub));

$img_date = createImageFromDate(date("Y-m-d"));

//  - Sätter vilken färg som ska vara transparent -
$grey = imagecolorresolve($img, 217, 217, 217);  			// bestäm vilken färg som ska vara transparent
imagecolortransparent($img_date,$grey);
imagecolortransparent($img,$grey);

// Vi skriver $img_date (bilden för datumet) till orginalbilden $img
$nextpos = copyImage($img,$img_date,$nextpos,0,0,0,getWidth($img_date),getHeight($img_date));

imagegif($img,"test.gif"); // skriv bilden $img till filen test.gif
142 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)