2012-05-21 30 views
6

Muszę wysłać zdjęcie do serwisu. Usługa sieciowa powinna odbierać obraz jako bajty (może bytearray) - nie jako ciąg ... Jak mogę przekonwertować obrazy na "bajt" lub bytearray?Konwertuj obraz na bajt z php

Próbowałem to (bez sukcesu):

$image1 = file_get_contents("LINK TO IMAGE"); 
$image1BinaryData = "".base64_encode($image1).""; 

Każda pomoc będzie mile widziane ...

+0

Czytanie z file_get_contents powinno zwrócić tablicę bajtów, nie? Czy może konkretnie zwraca ciąg znaków? Jeśli tak, użyj fopen, fread i fclose –

+0

przeczytaj ten http://stackoverflow.com/questions/885597/string-to-byte-array-in-php –

Odpowiedz

6

Czy próbowałeś bezpośrednio odczytać obraz jako dane binarne?

<?php 
$filename = "image.png"; 
$file = fopen($filename, "rb"); 
$contents = fread($file, filesize($filename)); 
fclose($file); 
?> 
+1

to właśnie robi file_get_contents(). – goat

+0

Jestem nowy, więc proszę o cierpliwość :) Jeśli używam tego egzampla, jaki variabel przechowuje bajty? – fletcher

+1

To rozwiązanie działa: '$ handle = fopen (" LINK TO IMAGE "," rb "); $ contents = stream_get_contents ($ handle); fclose ($ handle); ' – fletcher

0

ciąg PHP jest binarny, tak to już w bajtach.

pozbyć base64_encode() i użyć urlencode() lub rawurlencode()

+0

Podoba Ci się to? $ image1 = file_get_contents ("test.jpg"); $ image1BinaryData = urlencode ($ image1); – fletcher

+0

prawdopodobnie. zależy od sposobu wysłania go do serwisu. Być może w ogóle nie potrzebujesz funkcji urlencode(). – goat

1

Jest to rzeczywista tablica bajtów równoważna z tym, co jest generowane w językach C# i Java.

$data = file_get_contents("test.jpg"); 

$array = array(); 
foreach(str_split($data) as $char){ 
    array_push($array, ord($char)); 
} 
var_dump(implode(' ', $array));