2010-06-18 31 views
5

Tôi nhận được một byte base64 [] từ tệp xml qua jaxb và tôi không chắc chắn cách chuyển đổi lại thành hình ảnh gwt (về cơ bản là img html cơ bản nếu tôi hiểu chính xác). Làm cách nào để chuyển đổi thành chuỗi thích hợp?gwt base64 image

bản năng đầu tiên của tôi là

public void onSuccess(final byte[] icon) { 
img.setUrl("data:image/png;base64,"+icon.toString()); 

nhưng rõ ràng đó không làm việc. Bất kỳ trợ giúp nào được đánh giá cao!

Trả lời

6

Nếu bạn muốn sử dụng data URIs (với mã hóa base64) - mặc dù IE < = 7 không hỗ trợ nó, và IE8 chỉ cho phép lên đến 32 kB - bạn sẽ phải mã hóa base64 dữ liệu hình ảnh.

Có một số bộ mã hóa Base64 xung quanh ví dụ: com.google.gwt.user.server.Base64Utils, bạn có thể sử dụng ở phía máy chủ:

String base64 = Base64Utils.toBase64(icon); 

Sau đó truyền dữ liệu được mã hóa cho khách hàng.

Nếu bạn hoàn toàn muốn, bạn cũng có thể sử dụng bộ mã hóa ở phía máy khách, nhưng điều đó đòi hỏi phải sao chép tệp java vào nguồn khách hàng (nếu bạn đảm bảo rằng triển khai bạn chọn cho phép).

0

Bạn nên cung cấp URL có thể được sử dụng để tải hình ảnh. Tôi thực sự không nghĩ rằng mã của bạn sẽ dẫn đến một cái gì đó trông giống như một url (cái gì đó như, http://localhost/myimage.png, hoặc có thể mywebapp/myimage.png ...)

+0

OP đang nói về URI dữ liệu. Định dạng hợp lệ: http://en.wikipedia.org/wiki/Data_URI_scheme#Format (lưu ý rằng nó không hoạt động với tất cả các trình duyệt) –

+0

Bạn nói đúng ... :) – markovuksanovic

4
String b = "this should be a base64 encode string that was generated from an icon or byte[]"; 
Image image = new Image(); 
image.setUrl("data:image/png;base64,"+b); 

view.getPreviewTable().setWidget(14, 0, image); 

Hình ảnh là hình ảnh gwt trong trường hợp này.