2016-08-28 9 views
9

Próbuję przekazać scalony obraz z php do tagu meta html (dla karty podsumowania Twittera, jeśli się zastanawiasz), ale dane obrazu nie są przekazywane. Kiedy uruchomić ten kod otrzymuję żadnych błędów z HTML lub PHP:jak przekazać wygenerowany obraz php do metatagu html

PHP

$dest = imagecreatefromjpeg('http://www.website.com/Some-images/'.$postID.'.jpg'); 
$src = imagecreatefromjpeg('http://www.website.com/media/dog.jpg'); 



imagealphablending($dest, false); 
imagesavealpha($dest, true); 


imagecopymerge($dest, $src, 10, 9, 0, 0, 181, 180, 100); 

HTML

<meta name="twitter:image" content="'.$dest.'"> 

nie jestem w 100% pewien, że można nawet przejść raw w ogóle do atrybutu treści metatagu, ale myślę, że powinien istnieć sposób, aby to zrobić i myślę, że to właśnie powoduje, że obraz nie jest wyświetlany. Jestem otwarty na rozwiązanie html/css, jeśli rozwiązanie php nie jest możliwe. Utknąłem na tym przez jakiś czas, więc wszelkie sugestie i dane wejściowe, które możesz mieć, będą bardzo cenne. Dziękuję Ci!

EDIT

Dodam, że jest to skrypt php więc html tworzony jest tak:

$html = ' 

<html> 
<head> 

<meta name="twitter:image" content="'.$dest.'"> 

</head> 
<body> 

</body> 
</html> 

'; 

echo $html; 
+0

Jeśli umieścisz 'var_dump ($ dest);' w swoim kodzie, czy zobaczysz wartość '$ dest', czy nic? –

+0

@MartinParkin tak Otrzymuję wynik: "zasób (3) typu (gd)" –

+0

Myślę, że twój problem polega na tym, że ładujesz zasób na stronę, ale nigdy go nie wyświetlasz (tzn. '' tag.) –

Odpowiedz

11

to nie będzie działać. "imagecopymerge" zwraca zasób obrazu, który musi zostać przesłany do przeglądarki jako obraz lub zapisany na dysku twardym serwera plik o treści "imagejpeg". Jeśli jest on bezpośrednio wysyłany do przeglądarki (pierwsza opcja), ten plik PHP musi być odniesiony w kodzie HTML.

Więc w zasadzie, w HTML, odniesienie do pliku PHP z parametrem postID:

<meta name="twitter:image" content="image.php?postid='.$postID.'"> 

w pliku image.php tworzenia pliku i wyjście to (należy również dodać trochę kodu do sprawdzania poprawności $ _GET [ 'postID'] tutaj):

<?php 
$dest = imagecreatefromjpeg('http://www.website.com/Some-images/'.$_GET['postid'].'.jpg'); 
$src = imagecreatefromjpeg('http://www.website.com/media/dog.jpg'); 

imagealphablending($dest, false); 
imagesavealpha($dest, true); 

imagecopymerge($dest, $src, 10, 9, 0, 0, 181, 180, 100); 

header('Content-Type: image/jpg'); 
imagejpeg($dest); 
?> 
+0

Dzięki za to milionowi chciałbym móc dać ci więcej punktów, ale jak widzisz, jestem trochę niska Ta metoda działa świetnie –

1

Jeśli chcesz umieścić zawartość zmiennej PHP w jakimś HTML musisz echo zmienną do atrybutu HTML umieszczając ją wewnątrz bloku kodu PHP.

Coś jak to powinno osiągnąć cel:

<meta name="twitter:image" content="<?php echo $dest; ?>"> 
+0

Dziękuję za sugestię, ale spróbowałem Twojego rozwiązania i nadal nie mam kości :(Zmieniłem też moje pytanie, aby podać więcej informacji. –

6

można używać base64

$dest = imagecreatefromjpeg('http://www.website.com/Some-images/'.$postID.'.jpg'); 
$src = imagecreatefromjpeg('http://www.website.com/media/dog.jpg'); 

imagealphablending($dest, false); 
imagesavealpha($dest, true); 

imagecopymerge($dest, $src, 10, 9, 0, 0, 181, 180, 100); 

$img = base64_encode($dest); 

następnie użyć tego string w tagu:

<meta name="twitter:image" content="data:image/png;base64,<?php echo $img; ?>"> 
+0

Z jakiegoś powodu nie mogę uzyskać karty twitter do pracy z kodowaniem base64, ale dziękuję i tak! –

Powiązane problemy