Görüntünün boyutlarını kontrol etmek ve genişliği belirli bir eşiği aştığında küçültmek istiyorum. ImageIO.read() ile 6MB JPEG bir görüntü yüklediğimde, BufferedImage yaklaşık 45 MB yığın alanı ayırır. Tüm verileri belleğe yüklemeden geçiş görüntüsünü yeniden boyutlandırmanın bir yolu var mı? ImageIO.read() dosyasını bir File nesnesinden geçirmeyi denedim, veriyi diskten aktaracağını düşünürdüm, ama yardımcı olmaz.Bir görüntü belleğe yüklenmeden nasıl yeniden boyutlandırılır?
cevap
kontrol dışarı im4java ve JMagick. Her ikisi de görüntü manipülasyonu için ImageMagick olarak adlandırılan son derece verimli bir harici alet kullanır. Im4Java, komut satırı uygulamasını çağırır (ayrı bir işlemde çalışır) ve JMagick, JNI aracılığıyla aynı işlem içinde bunu çağırır. Ben (döndürme, yeniden boyutlandırma, ölçekleme, vb) basit görüntü işleme yapıyorum Eğer
, ben daha ziyade ImageMagick benim için yapalım etmişti. Daha hızlı, daha güvenilir ve benzer bir süre içinde uyguladığınız her şeyden daha az bellek tüketir.
Bu yardımcı olur umarız!
Sen belleğe yüklenerek olmadan görüntünün genişliğini ve yüksekliğini kontrol etmek ImageInfo kullanabilirsiniz. Resmi belleğe yüklemeden yeniden boyutlandırmanızı sağlayacak bir kitaplık bilmiyorum. 45MB, o kadar çok hafıza değil. Sadece yığın büyüklüğünü artırabilir misin?
... için küçük bir karşılaştırma bağlıdır "45MB tüm bu kadar değil". – EboMike
Duydun! Yüksek eşzamanlılık ve bellek kısıtlı cihazlar için 45MB'lık bir hareket yok! –
true. Hedef platformunuz 45 MB yüklemenize izin vermiyorsa, ayrı bir sunucuda görüntü ölçekleme yapmayı düşünebilirsiniz. – dennisjtaylor
Mükemmel sonuçlarla daha önce jmagick kullandım, ancak farklı ortamlarda çalışabilmeniz (kavanozları doğru yere yapıştırarak, doğru görüntü yapısına sahip olduğunuzdan emin olmanız vb.) Çok zor olabilir.
Sen imgscalr (http://www.thebuzzmedia.com/software/imgscalr-java-image-scaling-library) kullanarak düşünebilirsiniz. Apache 2.0 lisansı altında açık kaynak, saf java görüntü işleme kütüphanesi. Çok fazla (çok ..) kullanımı daha kolay ve daha hızlı Java2D şeyler daha hızlı.
- 1. Bitmap genişliği ve yüksekliği belleğe yüklenmeden alın
- 2. SKEmitterNode nasıl yeniden boyutlandırılır?
- 3. NumericVector nasıl yeniden boyutlandırılır?
- 4. Görüntü, CSS ile ekran yüksekliğine nasıl yeniden boyutlandırılır?
- 5. Zend_File_Transfer_Adapter_Http() kullanılarak yükleme sırasında görüntü nasıl yeniden boyutlandırılır?
- 6. WorldWind Paneli nasıl yeniden boyutlandırılır?
- 7. Android'de Resim nasıl yeniden boyutlandırılır?
- 8. NSImage nasıl hızla yeniden boyutlandırılır?
- 9. bootstrap-wysihtml5 nasıl yeniden boyutlandırılır
- 10. iOS'ta UIView nasıl yeniden boyutlandırılır?
- 11. İç sayfadaki bir iframe nasıl yeniden boyutlandırılır?
- 12. Genişletilebilir bir iletişim kutusu nasıl yeniden boyutlandırılır?
- 13. Java'da tamponlanmış görüntü n grafik 2d yeniden boyutlandırılır?
- 14. SQL Azure Veritabanı Nasıl Yeniden Boyutlandırılır
- 15. CKEditor'ın ebeveyne sığması için nasıl yeniden boyutlandırılır
- 16. ImageView Programatik olarak nasıl yeniden boyutlandırılır
- 17. Android Package dosyası nasıl yeniden boyutlandırılır?
- 18. Html tablo sütunları nasıl yeniden boyutlandırılır?
- 19. Eylem sayfası nasıl yeniden boyutlandırılır? nesnel C
- 20. Görüntü tamamen yüklenmeden önce Javascript ile görüntü boyutlarına getir
- 21. Tarayıcı penceresinde kenarlıklı ext.net kapsayıcısı yeniden boyutlandırma nasıl yeniden boyutlandırılır
- 22. Görüntüyü, oranlarını korurken saf HTML/CSS'de nasıl yeniden boyutlandırılır?
- 23. Görüntüyü UITableView hücresine sığdırmak için nasıl yeniden boyutlandırılır?
- 24. Yönlendirme değiştirilirken UIView düzgün şekilde yeniden boyutlandırılır?
- 25. Softkeyboard görüntülendiğinde Edittext yatay modda yeniden boyutlandırılır
- 26. Android: XML'de görüntü boyutunu yeniden boyutlandırma
- 27. Bir görüntü görüntüsünü javafx'te nasıl yeniden boyutlandırırım?
- 28. Görüntü düğümü nasıl yeniden ölçeklendirilir?
- 29. VB.NET Diğer yazı tipi ayarlarını değiştirmeden labeltxt nasıl yeniden boyutlandırılır
- 30. 4K ekran için PyQt4'te QMenuBar nasıl yeniden boyutlandırılır
Teşekkürler Ben. Java için ImageMagick kitaplıklarını kontrol edeceğim. –
Ben ile katılıyorum; yüksek verimlilik, gitmeniz gereken bir yol ise, yerel bir çözüm kullanarak ve Java ile çağırarak, muhtemelen gerçekleşecek tek yoldur. Görüntülerin yeniden boyutlandırılması aslında bir yeniden örnekleme işlemidir; bundan kaçamazsın. Yeniden örnekleme, bir piksel algoritması toplama ve ortalama piksel değerlerini gerektirir; Bunu Java'daki "parçalarda" yapmak, bir seferde bölümler halinde çekerek ImageReadParam'ın bir çok özel kod gerektirmesini, bunları örneklemesini ve sonuçların verimli bir şekilde birleştirilmesini gerektirecektir. Kısacası, * emecektir *. –
Teşekkürler, Riyad! :-) –