2012-02-18 11 views
5

Resmin bas64’e yeniden boyutlandırılan ve kodlanan bir sunucu uygulamasına sahibim64. Ben o zaman tarayıcı kodlama alacak buCarriage iade sorunu Base64’den Java’ya kod çözme ve tarayıcıya gönderme

sun.misc.BASE64Encoder encoder = new BASE64Encoder(); 
String sEncImage = "data:image/jpg;base64," + encoder.encodeBuffer(imageInBytes); 

gibi tarayıcıya göndermek için base64 içine bu kodlamak bu

BufferedImage newBuf = .. a bufferedImage... 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
ImageIO.write(bufferedImage, sImgFormat, baos); 
baos.flush(); 
imageInBytes = baos.toByteArray(); 

gibi kodlamak ve \ "(satırbaşları dışında çalışır n "), görüntüyü bozan dizgenin içine sürekli olarak gömülür. Taşıyıcıyı çıkardığımda görüntü geri döner. Taşıyıcı dönüşü olmadan kodlama oluşturmanın bir yolu var mı. Yoksa geri göndermeden önce filtrelemeli miyim?

(I J2SE 1.4.2 kullanıyorum ve bunu yapmaya devam etmeliyiz am)

+0

Neden bayt akışı göndermiyorsunuz? – Alanmars

+0

Tarayıcıya base64 metni göndermem gerekiyor. Diğer ucunda HTML5 – giulio

+0

\ n bir satır başı karakteri değil, satır beslemesidir. Şaryo dönüşüdür. https://stackoverflow.com/questions/3091524/what-are-carriage-return-linefeed-and-form-feed – Achille

cevap

4

Ben sun.misc.Base64encoder çıktı chunking şüpheleniyorsanız. Sun.misc sınıflarını kodunuzu Oracle JVM'leriyle kısıtladığı için kullanmazdım (örneğin, IBM Websphere'de çalışır). Base64 kodlayıcısını veya Base64OutputStream numaralı bağlayıcıları kullanırdım.

+0

"Chunking" ile kastettiğinizde, her "yığın" dan sonra bir "\ n" sınırlayıcı yerleştirilir. Yani, Common64 müşterek bahisleri "saf" bir base64 dönüşümü sağlayacaktı? Base64, tüm JVM'lerde çalıştığı sırada, oracle olmayan JVM'lerde – giulio

+0

sun.misc sınıfları mevcut değildir. Evet yığınlama, her 76 karakterden sonra bir satır başı döndürür. – beny23

+0

Tamam. Sadece onaylamak için, commons codec'i 1.4 uyumlu mu? – giulio

İlgili konular