R-ohjelmointi.org

Tilastotieteellistä ohjelmointia R-kielellä

Kuvatiedoston tyypin tunnistaminen

Tämä(kin) postaus sai alkunsa pieleen menneestä visualisoinnista. Yritin alunperin tuottaa R:llä GIF-animaatioon tarvittavia kuvia, mutta onnistuin luomaan samaan kansioon joukon sekalaisia, eri tiedostomuodoissa olevia kuvatiedostoja, joissa ei tietenkään ollut edes tiedostopäätteitä. Piti siis selvittää, mitä kuvia oikein tulikaan generoitua…

ImageMagick tunnistaa laajan valikoiman erilaisia kuvatyyppejä vaivatta. Koska se löytyi koneelta, kutsuin sitä suoraan R:stä kullekin kuvalle ja nimesin tiedostot lopuksi uudelleen oikeilla päätteillä varustettuina. ImageMagickia voi kutsua yhdelle kuvatiedostolle suoraan R:stä esimerkiksi seuraavasti.

# Ladataan esimerkkikuvaksi Rlogo
download.file("https://www.r-project.org/logo/Rlogo.png", "./Rlogo", mode="wb")
 
# Tunnistetaan kuvatyyppi
type<-system("identify Rlogo", intern=TRUE)
 
# Poimitaan erikseen pelkkä kuvatyypin tunniste
strsplit(type, " ")[[1]][2]
[1] "PNG"

Funktiolle system() annettu argumentti intern=TRUE tallentaa komentoriviohjelman tulosteen, jolloin sitä voidaan käsitellä eteenpäin R:ssä.

Toinen vaihtoehto on käyttää esimerkiksi R-pakettia readbitmap:

library(readbitmap)
 
files<-"Rlogo"
filetypes<-unlist(lapply(files, image_type))
filetypes
[1] "png"

Vektoriin filetypes on tämän jälkeen tallennettu kunkin kuvan tyyppi.

Kolmas vaihtoehto on käyttää R-pakettia magick:

library(magick)
img<-image_read("Rlogo")
 
# Kuvatyyppi
image_info(img)$format
[1] "PNG"

Ensimmäinen ratkaisu vaatii ImageMagick-asennuksen koneelta, mutta se tunnistaa laajan valikoiman erilaisia kuvatiedostotyyppejä. Viimeinen taas on hieman hidas, koska kaikki kuvat on ensin luettava R:ään, mutta sillä on samat edut kuin ImageMagickin suoralla kutsumisella: laaja kuvatyyppien tuntemus. Keskimmäinen vaihtoehto on nopein, mutta sen tunnistamien kuvien tyypit rajoittuvat vain muutamaan. Käsillä oleva ongelmani kuitenkin ratkesi riittävästi juuri tuolla keskimmäiselllä ratkaisulla, mutta jos kuvissa esiintyvistä tiedostotyypeistä ei ole tarkkaa käsitystä, voi jompi kumpi ImageMagickin toiminnallisuuteen perustuva tapa toimia parhaiten.


Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *