En iyi java görüntü işleme kütüphanesi / yaklaşımı nedir? [kapalı]


245

Hem JAI medya apis hem de ImageMagick kullanıyorum?

ImageMagick'in bazı ölçeklenebilirlik sorunları var ve JNI tabanlı JMagick de çekici değil. JAI, yeniden boyutlandırma işlemleri yaparken ImageMagick'e kıyasla düşük kaliteli sonuçlara sahiptir.

Herkes açık kaynak veya ticari doğal java ve yüksek kaliteli sonuçlar veren herhangi bir mükemmel araçlar biliyor mu?


5
JMagick'in javadoclar dışında neredeyse hiçbir belgesi yoktur. Sadece iki saatimi yapması kolay bir şey aramak için harcadım.
Alex Ciminian

Aslında. Sürecin dışına çıkmayı ve süreci yönetmenin bir aracı olarak apache exec kullanarak ImageMagick'i kullanmayı seçtim. Bu iyi çalıştı. Şimdiye kadar sadece bu amaçla bir görüntü sunucusu oluşturmak için gitmiş olabilir. ImageMagick'in kalitesi ve işlevselliği ile bir şeyler bulmak zor.
Daniel Honig

158
Bunun gibi soruların konu dışı olarak kapanması çok saçma. 100.000'den fazla görüntüleme, açıkça insanların sorduğu bir soru. Bazen insanlar önceden yapacakları her şeyi tam olarak bilmezler ve diğer insanların en iyi genel çerçevedeki "görüşlü" yanıtlarını takdir ederler. SO üzerinde çok fazla görkemli ılımlılık!
user467257

12
İnsanlar Java programlamanın önemli bir yönünün avantajlarını ve dezavantajlarını tartışırsa ne olur? SO'nun yapması gerekenler değil mi? IMHO, bu tür sorular, belirli bir konudan yeniden başlayarak geliştiricilere iyi bir referans sağlamak için dikkatlice denetlenmeli ve sürdürülmelidir.
Raúl

20
Evet. Google için en iyi sonuç, java image processing libraryancak her zamanki gibi kapalı ... Bu günlerde denetleme SO'da abartılıyor.
Stijn de Witt

Yanıtlar:


88

Orada olmak için övünen ImageJ var

dünyanın en hızlı saf Java görüntü işleme programı

Başka bir uygulamada kütüphane olarak kullanılabilir. Mimarisi mükemmel değildir, ancak temel görüntü işleme görevlerini yerine getirir.


2
ImageJ'yi bir dizi görüntü işleme uygulamasında kütüphane olarak kullanıyorum. Çok iyi bir Java kütüphanesi. Java2D ile de güzel entegre olur, böylece 2'yi kolayca karıştırabilir ve eşleştirebilirsiniz.
hohonuuli

3
ImageJ kullandığım zaman API'sı oldukça garipti. Eklentileri yazabileceğiniz bir kitaplıktan daha fazlası. Ve hatırladığım kadarıyla, eski AWT kod tabanında yeni GUI geliştirmeye çalışmak bir acıydı.
Ivan

4
Basit bir görüntü döndürme, ölçekleme ve kırpma yapmaya çalışırken yarım günü boşa harcadım. 2019 ve ImageJ'in belgeleri kullanılamıyor.
M. Leonhard

133

Bu sorunun oldukça eski olduğunu biliyorum, ancak yeni yazılım çıktıkça, insanlar için ilginç olabilecek projelere yeni bağlantılar elde etmeye yardımcı oluyor.

imgscalr , kullanımı oldukça basit olan saf Java görüntü yeniden boyutlandırma (ve dolgu, kırpma, döndürme, parlaklaştırma / karartma vb. gibi basit ops) kütüphanesidir - tek bir sınıf, tümü statik yöntemler olarak tanımlanan bir dizi basit grafik işleminden oluşur bir görüntü iletir ve bir sonuç elde edersiniz.

Kütüphaneyi kullanmanın en temel örneği şöyle görünecektir:

BufferedImage thumbnail = Scalr.resize(image, 150);

Ve birkaç kaliteli ince ayar ve benzeri kullanarak küçük resimler oluşturmak için daha tipik bir kullanım şöyle görünebilir:

import static org.imgscalr.Scalr.*;

public static BufferedImage createThumbnail(BufferedImage img) {
    // Create quickly, then smooth and brighten it.
    img = resize(img, Method.SPEED, 125, OP_ANTIALIAS, OP_BRIGHTER);

    // Let's add a little border before we return result.
    return pad(img, 4);
}

Tüm görüntü işleme işlemleri ham Java2D boru hattını (büyük platformlarda hızlandırılmış donanım) kullanır ve kodunuzdaki JNI gibi kitaplık çekişmesi yoluyla çağrı yapmanın acısını getirmez.

imgscalr, birkaç yerde büyük ölçekli üretimlerde de kullanıldı - AsyncScalr sınıfının dahil edilmesi, onu herhangi bir sunucu tarafı görüntü işleme için mükemmel bir bırakma haline getiriyor.

GIMP'nin Lancoz3 uygulamasından daha iyi görünen ölçekli bir sonuç sağlayan en yüksek ULTRA_QUALITY moduyla hız ve kalite arasında değiş tokuş yapmak için kullanabileceğiniz görüntü kalitesinde çok sayıda ince ayar var.


@Riyad Kalla ilginç görünüyor teşekkürler ... Ama ticari projelerde kullanılabileceğini anlamıyorum?
user592704

2
@ user592704 Kesinlikle, imgscalr Apache 2 lisansı altında lisanslanmıştır; aynı lisans Apache Vakfı'ndaki her şeyin lisansı altındadır. Açık kaynak veya ticari ürünlerde alabilir ve onunla istediğinizi yapabilirsiniz. imgscalr aslında üretimdeki bir dizi ticari web uygulamasında konuşlandırılmıştır.
Riyad Kalla

1
@DavidParks Doğru, imgscalr, daha önce değil, BufferedImage örneğine (kod çözülmüş görüntü verileri) sahip olduğunuzda devralmayı amaçlıyor. Hatta bu boru hatları uzun zamandan beri Java2D ekibi tarafından kapakların altında donanım hızlandırıldığından kendi kod çözücülerimi / kodlayıcılarımı yapmaya çalışma yolunda gitmeyi düşünmek bile istemedim - tüm bu işleri hatasız ve verimli bir şekilde yeniden yapmaya çalışıyor Herkül bir girişim olurdu.
Riyad Kalla

1
@gstackoverflow imgscalr, işlenmemiş BufferedImage örneklerinde (kod çözülmüş görüntü verileri) çalışır - bu nedenle başka bir şeyin (genellikle ImageIO kitaplığı) kodlanmış görüntü verilerinin bir BufferedImage'a kodunu çözmesi ve imgscalr işlemi tamamlandıktan sonra yeni bir görüntüye yeniden kodlaması gerekir. üzerinde - başka bir yol koymak "imgscalr dosya formatı umurumda değil, imgscalr için el önce görüntüyü deşifre ettik"
Riyad Kalla

1
ImgScalr sadece temel görüntü işleme için iyidir. Görüntü yükleme ve işleme söz konusu olduğunda. karmaşıklıktan yoksundur.
MarekM

31

Bir başka iyi alternatif: Marvin


9
Çok teşekkürler. Günümü kurtardın! : D (PS: OP değilim. Googling yaparken bana güvendim ve bana güvenin, bana çok yardımcı oldu!
missingfaktor

3
@missingfaktor şimdi sana bir bira borçluyum. Yusuf'a olan övgü günümü de kurtardı. Joseph, sen de bir bira alıyorsun :)!
Filip Dupanović

3
Görünüşe göre bu URL artık mevcut değil, ancak marvinproject.sourceforge.net yeni URL gibi görünüyor.
Amos M. Carpenter

Tamam, BUNA bir göz atmak zorundayım. =)
Marvo

Gerçekten iyi görünüyor, bir deneyin.
Eylül'te Ridcully


8

İşleme yeni ama çok, çok iyi.


1
İşlemenin farkındayım, ama insanlar bunu gerçekten kullanıyor mu, X jpeg'in moda kitaplığımda X dönüşümünü çalıştırmak ister miyim?
Daniel Honig

Ben kullandım ve gerçekten güçlü ve bahis oynamaya değer görünüyor
fmsf

2
Aslında çekirdek kütüphaneler (gömme işlevselliği için kullanılabilir) LGPL'dir. Ama kimse lisansın ne olduğunu sormadı. wiki.processing.org/w/…
Benjamin Atkin

5

Catalano Framework'ü kullanmaya çalışın .

Anahtar noktaları:

  • AForge.NET/Accord.NET gibi mimari.
  • Her iki ortamda da aynı kod, masaüstü ve Android ile çalışın.
  • Paralel olarak birkaç filtre içerir.
  • Geliştirme tam anlamıyla ilerliyor.

Catalano Framework, Java ve Android için bilimsel hesaplama için bir çerçevedir. Proje, .NET için AForge.NET ve Accord.NET çerçevelerinin birçok özelliğinin ilk bağlantı noktası olarak başladı, ancak şu anda bu projeler arasında paylaşılan daha gelişmiş özelliklerle sürekli büyüyor.

Misal:

FastBitmap fb = new FastBitmap(bitmap);

Grayscale g = new Grayscale();
g.applyInPlace(fb);

Threshold t = new Threshold(120);
t.applyInPlace(fb);

bitmap = fb.toBitmap();

//Show the result

6
The best framework in Java is Catalano Frameworkkendi ürününüzün reklamını yaptığınız anlaşılıyor. Çerçeveniz harika olabilir, ancak SSS'de belirtildiği gibi, ona bağlılığınızı açıklamalısınız .
Matthias Braun

@MatthiasBraun Tamam, sana katılıyorum, bunu bilmiyordum. Cevabı düzenledim.
Diego Catalano


4

imo en iyi yaklaşım, Java için bir comand-line arayüzü olarak im4java ile GraphicsMagick Görüntü İşleme Sistemini kullanmaktır .

GraphicsMagick'in birçok avantajı var, ancak hepsi için bir tane var:

  • GM, dünyanın en büyük fotoğraf sitelerinde (örn. Flickr ve Etsy) milyarlarca dosyayı işlemek için kullanılır.

Bu sadece bir komut satırı sarıcı - bir kütüphane değil ....
Kulpemovitz

3

http://im4java.sourceforge.net/ - linux çalıştırıyorsanız yeni bir işlem yapmak pahalı değildir.


Bellek
yetersiz

çatallama pahalıdır. Çok fazla bellek kullanabilir. Kişinin alıntısını coderanch.com/t/419196/java/java/there-any-way-execute-Linux altındaki bir makaleden okuyun (Makale: developers.sun.com/solaris/articles/subprocess/subprocess .html )
Plaudit Design

@Plaudit checkout gm4java, etkileşimli modda bir GM süreci havuzu oluşturur ve bir görüntüyü dönüştürmek için her seferinde çatallamaya gerek yoktur. kennethxu.blogspot.com/2013/04/…
Kenneth Xu

2

Ticari araçlar için Snowbound'u denemek isteyebilirsiniz.

http://www.snowbound.com/

Onlarla yaşadığım deneyim biraz tarihli, ancak Java Görüntüleme API'lerini JAI'den çok daha kolay ve çok daha hızlı buldum.

Müşteri desteği ve kod örnekleri de çok iyiydi.



1

"En iyi" kütüphane olduğunu söyleyemem, ama bunu deneyebileceğini düşünüyorum: http://algart.net/java/AlgART/ Genelleştirilmiş "akıllı" dizileri ve matrisleri destekleyen açık kaynaklı bir Java kütüphanesidir. 2D-, 3D- ve çok boyutlu görüntü işleme ve diğer algoritmalar dahil olmak üzere farklı türlerde elemanlar (1 bit ila 64 bit kayan nokta), diziler ve matrislerle çalışma. Ne yazık ki şu anda yeterli demo ve örneklerden oluşmuyor, ancak öte yandan, bir sürü JavaDoc içeriyor. Birkaç yıl boyunca ticari yazılımların (SIMAGIS) temelini oluşturdu, ancak şimdi açık kaynak kodlu.


2
Bu bağlantı soruyu cevaplayabilirken, cevabın önemli kısımlarını buraya eklemek ve bağlantıyı referans olarak sağlamak daha iyidir. Bağlantı verilen sayfa değişirse, yalnızca bağlantı yanıtları geçersiz olabilir.
Matthias

Haklısın, ilk yorumu ben düzenledim.
Daniel
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.