2015-05-07, 16:43
  #1
Medlem
Jag har ett script som läser in en "grundbild" och sen ritar på bilden linjer och text, sen gör det till en base64 image enligt följande:

Kod:
$image "<img src='data:image/jpeg;base64,".base64_encode ($data)."'>"

Om jag vill ändra storleken på en normal jpeg så kan jag lägga till height och/eller width efter men det får jag inte att fungera på den här bilden.
finns det någon lösning som gör att jag kan ställa in storleken på bilden förutom att ändra stoleken på själva bildfilen?

Nu kanske det här är en dum fråga men jag är ny på php.
Om jag "aktiverar" caching av bilder kommer den här bilden också cachas?
Jag antar att den inte gör det eftersom den blir "unik" var gång.
Citera
2015-05-07, 19:29
  #2
Medlem
Bongomans avatar
Varför använder du enkelcitat för argumenten?
Citera
2015-05-08, 07:21
  #3
Medlem
Citat:
Ursprungligen postat av TheHellis
Om jag vill ändra storleken på en normal jpeg så kan jag lägga till height och/eller width efter men det får jag inte att fungera på den här bilden.
finns det någon lösning som gör att jag kan ställa in storleken på bilden förutom att ändra stoleken på själva bildfilen?
Det borde gå att styra som vilken bild som helst.

Citat:
Ursprungligen postat av TheHellis
Om jag "aktiverar" caching av bilder kommer den här bilden också cachas?
Jag antar att den inte gör det eftersom den blir "unik" var gång.
Base64-strängen kommer se lika ut varje gång, så visst skulle den kunna cachas. Problemet är att det inte finns någon vits till cachning då du lägger bilden som en base64-sträng inline. Den datan kommer ju alltid skickas med html-filen. (Fast om html-filen är cachad blir ju faktiskt bilden också det per automatik.)

Varför väljer du ens att köra bilden inline som base64?
Citera
2015-05-08, 08:53
  #4
Medlem
xid0ns avatar
http://jsfiddle.net/Xadvz/268/

Det verkar fungera utmärkt med att sätta height/width.
Citera
2015-05-08, 16:48
  #5
Medlem
Citat:
Ursprungligen postat av Bongoman
Varför använder du enkelcitat för argumenten?

Vet inte helt ärligt. Men det fungerar.
Som sagt är jag ny på PHP och grunden till koden hittade jag på en annan sida.


Citat:
Ursprungligen postat av AVGASBARN
Det borde gå att styra som vilken bild som helst.

Base64-strängen kommer se lika ut varje gång, så visst skulle den kunna cachas. Problemet är att det inte finns någon vits till cachning då du lägger bilden som en base64-sträng inline. Den datan kommer ju alltid skickas med html-filen. (Fast om html-filen är cachad blir ju faktiskt bilden också det per automatik.)

Varför väljer du ens att köra bilden inline som base64?

Ok så cachning kommer inte göra någon skillnad om jag bara väljer jpeg och gif.

Anledningen är att bilden i grunden är en kartvy, sen kollar koden hur vinden är i riktning och styrka och ritar ut det på bilden.
Jag vill bara ha "grundbilden" sparad, när kartan med vinden visas för användaren så ska den bara visas och sen inte finnas längre.
Därav base64. Men det kanske finns en bättre lösning?



Citat:
Ursprungligen postat av xid0n
http://jsfiddle.net/Xadvz/268/

Det verkar fungera utmärkt med att sätta height/width.

Tack!
Jag har alltid skrivit height och width sist i imgtaggen.
Av någon anledning funkade inte det för mig, men när jag sätter det före src så funkar det.
Kan vara jag som gjorde ett misstag. Men så som du visar funkar det perfekt!



Tack alla!
Citera
2015-05-08, 19:31
  #6
Medlem
Citat:
Ursprungligen postat av TheHellis
Anledningen är att bilden i grunden är en kartvy, sen kollar koden hur vinden är i riktning och styrka och ritar ut det på bilden.
Jag vill bara ha "grundbilden" sparad, när kartan med vinden visas för användaren så ska den bara visas och sen inte finnas längre.
Därav base64. Men det kanske finns en bättre lösning?
Kan du inte bara lägga en bild med riktning och styrka ovanpå kartvyn? Det är ju enklast.

Om inte annat kan du använda GD eller Imagick för att skapa en bild "on the fly". Då får du en img-tag som ser ut
Kod:
<img src="kartvy.php" /> 
notera .php
kartyvy.php kommer alltså att spotta ur sig en bild. Sen får du se till att sätta rätt headers för hur du vill ha cachningen av den.
__________________
Senast redigerad av AVGASBARN 2015-05-08 kl. 19:54.
Citera
2015-05-09, 15:02
  #7
Medlem
Citat:
Ursprungligen postat av AVGASBARN
Kan du inte bara lägga en bild med riktning och styrka ovanpå kartvyn? Det är ju enklast.

Om inte annat kan du använda GD eller Imagick för att skapa en bild "on the fly". Då får du en img-tag som ser ut
Kod:
<img src="kartvy.php" /> 
notera .php
kartyvy.php kommer alltså att spotta ur sig en bild. Sen får du se till att sätta rätt headers för hur du vill ha cachningen av den.


Men riktning och styrka ändras hela tiden, så det måste uppdateras hela tiden.
Så jag förstår inte hur det blir enklare med en bild och en overlaybild ovanpå, det var så du menar?
GD och Imagick vet jag inte vad det är. provaade googla på Imagick men det verkar vara ett "samlingsnamn" på många olika funktioner.

För att skiva in text och rita på bilden använder jag:

Kod:
imagettftext($im200525$red_color$font$text);
imageline($im$x2$y2$x11$y11$red_color);
.........................

imagejpeg($imNULL100);
imagedestroy($im);

$data ob_get_contents ();

ob_end_clean ();
    
$image "<img src='data:image/jpeg;base64,".base64_encode ($data)."'>"
$im är sökvägen till kartbilden (jpegfil).

Längre ner i koden görs sen en, echo $image;
Citera
2015-05-09, 18:19
  #8
Medlem
Jag antar att du kör en imagecreatefromjpeg nånstans. Bryt ut koden från och med den raden till och med raden med imagedestroy() till egen egen php-fil som du kallar kartvy.php, men lägg även till headern:

Typ:
Kod:
<?php
header
("Content-type: image/jpeg");
$im imagecreatefromjpeg("karta.jpg");
/* 
kod för vind och grejer
*/
imagejpeg($im);
imagedestroy($im);
Sen i den fil du har idag ändrar du bara så din img-tag ser ut:
Kod:
<?php
$image 
'<img src="kartvy.php" />';

Du kan även testa surfa direkt till kartvy.php, så kommer den spotta ur sig en bild. Du kan alltså tänka att karvy.php är kartvy.jpg men med rätt vind varje gång.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in