Hướng dẫn convert binary to image php - chuyển đổi nhị phân sang php hình ảnh

Với chuỗi được hiển thị dưới dạng văn bản [một cách rộng rãi chuỗi này], đó là một dòng số của các số thập lục phân.

Trong JPEG, số ma thuật của một tệp như vậy là FF D8 là hai byte đầu tiên và FF D9 là hai byte cuối cùng [so sánh với cách xác định nội dung của một byte [] là một jpeg?].

Các số thập lục phân [hex ngắn] này cũng có thể được tìm thấy ở đầu và cuối chuỗi của bạn:

FF00D800FF00 ... 1F00FF00D9000
##  ##               ##  ##

Tìm kiếm các số ma thuật này cũng cho thấy các giá trị HEX luôn được nối với 00. Nó cũng cho thấy rằng ở cuối, một 0 duy nhất được tìm thấy.

Vì vậy, bốn ký tự luôn tạo thành một giá trị. Được mã hóa hex này trông giống như các giá trị 16 bit tuy nhiên giá trị không bao giờ đi qua phạm vi 8 bit [0-255], do đó luôn có 00 hiển thị.

Chỉ với thông tin này, người ta có thể cố gắng biến điều này thành một chuỗi nhị phân mà imagecreatefromstring của PHP có thể giải quyết:

$string = implode['',         // map array of binary strings to binary string
    array_map['chr',          // map ord integer value to character
        unpack['v*',          // unsigned short [always 16 bit, little endian byte order]
            pack["H*", $data] // hex to binary [high nibble first]
]]];

Sử dụng một chuỗi như vậy sau đó trong

$result = imagecreatefromstring[$string];
imagejpeg[$result, 'test.jpg'];

tiết lộ thông báo lỗi PHP sau:

IMAGECEP

Và hình ảnh sau:

Điều này có vẻ tuyệt vọng bị phá vỡ. Vì vậy, có lẽ bạn đang phải đối mặt với một vấn đề mã hóa bổ sung ở đây. Byte cuối cùng cho thấy rằng nhiều hơn đã được thực hiện và cũng phải có lý do tại sao dữ liệu đã được lưu trữ dưới dạng giá trị hex 16 bit thay vì chỉ là dữ liệu nhị phân [blob] vì cơ sở dữ liệu có hỗ trợ cho điều đó.

Nhưng đừng lãng phí quá nhiều thời gian, vì lỗ hổng trong phần mềm và cấu hình đã được sử dụng trong quá khứ, đây có thể chỉ là mất dữ liệu để tất cả những gì bạn có thể làm là khôi phục từ các bản sao lưu.

Cảm ơn rất nhiều! Điều đó hoạt động tuyệt vời? Tôi đã thử khối này để hiển thị hình ảnh JPEG từ chuỗi nhị phân, cũng hoạt động. Biến thể hoạt động để hiển thị hình ảnh JPEG từ chuỗi Hex Blob MySQL:
Working variant for displaying jpeg images from mysql blob hex string:

Bài Viết Liên Quan

Chủ Đề