Şimdi Ara

Java- Image.getType Hkk.

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
5
Cevap
0
Favori
331
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaslar öncelikle herkese Merhaba , iyi forumlar.

    Javada bildiğiniz gibi Image.getType diye bir komut var . Bufferedimage mevzularında kullanılıyor . Bu komut int değeri döndürüyor.
    Mesela if (Image.getType==1) diye karşılaştırma bile yapabiliyorsunuz . Benim sorunum ise şu .
    Kullanıcı .jpg türünde bir image girdi , ben if koşuluyla bunu belirlemek istiyorum fakat bu komutla döndürülen değerlerin listesi var mı?
    Örneğin image .jpg türünde olduğu zaman hangi int değerine , .png olduğu zaman hangi int değerine tekabül ediyor?
    Şimdiden teşekkürler



  • Arkadaşlar gerek kalmadı , pek yardım eden olmasa da :)
    İşi şöyle çözdük , alınan dosyanın ismini getname ile , son üç hanesini substring ile , uzunlugunu da length ile aldım . Bu cevabı da string içine attım.

    Konu Kilit <3
  • https://docs.oracle.com/javase/7/docs/api/java/awt/image/BufferedImage.html

    getType ; jpg, png ayrimi yapmaz; renk kodlamasina ve alpha degerine gore deger doner. (https://en.wikipedia.org/wiki/RGBA_color_space )

    ImageIO.read() metodu ile bufferedImage olusturduktan getType() uzerinden bu farkliligi kendin test ederek gozlemleyebilirsin. JPG uzantili bir image'i PNG ye cevir ( sadece rename yaparak ), bu sekilde cogu editorun resmi acamaz ama ImageIO ile stream uzerinden bufferedImage olusturabilirsin. PNG ve JPG icin ayni type degerini donduruyor ( 5 ).

    Uzantisindan okumak cogu durum icin isi kurtarsa da, kendin JPG uzantili resmi rename yaparak PNG 'ye cevirdiginde, ImageIO ile bunun formatini ogrenebilirsin. Core Java icerisinde "*ImageReader" postfix'i ile image reader'lari tanimlanmistir. GIF, BMP, JPG vs gibi. ImageInputStream iteratoru ile image dosyasini okuyabilen reader'larin listesini alabilirsin.

     

    String filePath = "/home/Mephalay/Desktop/anvil/images.png"; // Aslinda JPEG
    File jpgRenamedPng = new File(filePath);
    ImageInputStream iis = ImageIO.createImageInputStream(jpgRenamedPng);
    Iterator<ImageReader> imageReaderIterator = ImageIO.getImageReaders(iis);
    while (imageReaderIterator.hasNext()) {
    ImageReader next = imageReaderIterator.next();
    System.out.println(next.getFormatName()); // prints "JPEG"

    }




    Yukaridaki ornekte ImageIO.read(file).getType() yaparsan JPG ve PNG icin ayni sonucu doner, cunku renk kodlamalari ve alfa degerleri ayni bu iki format icin. Cunku sen aslinda "type" degil, "format" almak istiyorsun. Bu sekilde daha garanti.

    Fakat senin yaptigin yontem %99 kosulda durumu kurtarir ( Son 3 hane JPEG uzantida sorun cikaracak olsa da ). Hatta BufferedImage olusturmadigin icin daha az memory tuketir ve daha hizli calisir. Ama kesin sonuc bu : )



    < Bu mesaj bu kişi tarafından değiştirildi Mephalay -- 2 Ağustos 2017; 16:36:21 >
    < Bu ileti tablet sürüm kullanılarak atıldı >




  • İlgi , alakanız ve cevabınız için çok teşekkür ederim , ben yanlış anlamışım metodu. Bu arada jpeg için sıkıntı yok son 4 karakteri tarattırıyorum , .png .jpg ve jpeg varsa yapıştırıyorum direk ama .gif falan olursa patlar herhalde çalışmam . Tekrar sağolun.

    İyi forumlar
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.