2012-05-21 43 views
6

Tôi phải gửi ảnh đến một dịch vụ web. Các dịch vụ web sẽ nhận được hình ảnh như byte (mayby ​​bytearray) - không phải là một chuỗi ... Làm thế nào để chuyển đổi hình ảnh thành "byte" hoặc bytearray?Chuyển đổi hình ảnh thành byte bằng php

Tôi đã cố gắng này (mà không succes):

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

Bất kỳ trợ giúp sẽ được đánh giá cao ...

+0

Đọc tệp bằng file_get_contents phải trả lại một mảng byte, phải không? Hay nó đặc biệt trả về một chuỗi? Nếu có, hãy sử dụng fopen, fread và fclose –

+0

đọc http://stackoverflow.com/questions/885597/string-to-byte-array-in-php –

Trả lời

6

Bạn đã cố gắng để trực tiếp đọc những hình ảnh dưới dạng dữ liệu nhị phân?

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

đây là những gì file_get_contents() làm. – goat

+0

Tôi mới, vì vậy hãy kiên nhẫn :) Nếu tôi sử dụng exampel này, những gì variabel giữ byte? – fletcher

+1

Giải pháp này hoạt động: '$ handle = fopen (" LINK TO IMAGE "," rb "); $ contents = stream_get_contents ($ handle); fclose ($ handle); ' – fletcher

0

một chuỗi php là nhị phân, do đó, nó đã có trong byte.

thoát khỏi base64_encode() và sử dụng urlencode() hoặc rawurlencode()

+0

Như thế này? $ image1 = file_get_contents ("test.jpg"); $ image1BinaryData = urlencode ($ image1); – fletcher

+0

có thể. phụ thuộc vào cách bạn gửi nó đến webservice. Bạn có thể không cần urlencode(). – goat

1

Đây là mảng byte thực tế tương đương với những gì được tạo trong C# và Java.

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

$array = array(); 
foreach(str_split($data) as $char){ 
    array_push($array, ord($char)); 
} 
var_dump(implode(' ', $array)); 
Các vấn đề liên quan