2013-08-21 17 views
6

Birinin önerdiği yukarıdaki yanıt, renkli resmimi siyah beyaza dönüştürür. Yani benim sorum için uygun değil. Burada kod aşağıda ve resimdir. Resmi indirin ve bilgisayarınıza kaydedin. Ve yolun doğru değerle Yukarıdaki kodu çalıştırmayı, bu konudaki bir istisna durumuIllegalArgumentException: Kaynak Raster bantlarının ve kaynak renk alanı bileşenlerinin sayısı eşleşmiyor Renkli görüntü için İstisna

Resmi indir: https://skydrive.live.com/?cid=19547371C4F3B839&id=19547371C4F3B839%21105

Basitçe eğer bir java.awt.image.BufferedImage nesneyi elde edebilirsiniz birisi Bu kadar görüntü verilen görüntü (görüntüyü gri skalaya dönüştürmemelidir). D: Bu cevap verebilir eğer

Sen bir dahisin. Plz yardımı.

+0

mümkün Merhaba Philipp iyi sorumu okuyunuz http://stackoverflow.com/questions/10416378/imageio-read-illegal-argument-exception-raster-bands-colour-space-components –

+0

çoğaltmak. Açıkçası, "görüntüyü gri skalaya dönüştürmemelidir" ifadesini kullandım. Önerdiğiniz cevap, renkli görüntümü gri tonlamaya dönüştürür (siyah ve beyaz), eğer isterseniz lütfen deneyin ve görün. Ve başka sorular önermeyin ve bana vermeyin - denemeye çalışırken dikkat edin. Yorumlarınızdan sorumlu olun. –

+0

@PhilippSander Benzer olsa da, bu görüntüdeki sorun, bağlandığınızdan farklı. – haraldK

cevap

15

Burada kodunuzda yanlış bir şey yok. ImageIO için JPEGImageReader eklenti kullanarak resminizi okuyabiliyordum. Bu görüntü okuyucusu, JPEG hataları hakkında hafif olmaya çalışmaktadır ve standart Java JPEGImageReader'dan biraz daha yeteneklidir.

Ancak, JPEG dosyası,% 100 okuma olamaz bu yüzden bir takım sorunlar var gibi gözüküyor:

  • Birincisi, görüntüdeki ICC renk profil, 4 renk bileşeni vardır görüntü verisi ise sadece 3 renk bileşeni vardır (bu, gördüğünüz istisnaya neden olur). Kök nedeni muhtemelen kötü dönüşüm yazılımıdır. Daha fazla araştırma için meta verilere göz atmak için ExifTool veya benzeri bir yazılım kullanın. Okuyucum ICC profilini basitçe görmezden gelecektir. İkincisi, JPEG akışı zamanından önce sona erer (EOI eksik). Görüntünün sağ alt kısmında bazı çöp pikselleri olduğunu fark edeceksiniz. Bu konuda yapabileceğiniz hiç bir şey yok, orijinal görüntüyü elde etme dışında (aslında, resim bir küçük resim içeriyor ve küçük resim hasar görmemiş durumda; gerçekten ihtiyacınız varsa verileri yeniden oluşturmaya çalışabilirsiniz). Okuyucudan dönen görüntü, yerel yazılım tarafından okunan görüntülerle tutarlıdır.
+0

Merhaba Harald, cevap verdiğiniz için çok teşekkürler. Şimdi bu hata bana açık, açıkladığın için teşekkürler. Eklentinizi kullanmaya çalıştım, ancak bazı eksik bağımlılık kütüphaneleri nedeniyle derlemedim (bazı twelvemonkeys-imageio kavanozları ekledim). Bu yüzden, eklentiyi kullanmanın tam yolunu açıklamayı düşünür müsün, ve görüntü için bir arabellek almak için basit kod örneğini gösterebilirseniz harika olur. java uygulamalar eklenti kullanmak ve servlet konteynerleri burada bulabilirsiniz nasıl –

+2

Detayları: https://github.com/haraldk/TwelveMonkeys –

+0

bir cazibe gibi çalıştı :) – DominikAngerer

İlgili konular