Results 1 to 7 of 7

Thread: jpg file gedraaid na opslaan

  1. #1
    Registered User
    Join Date
    Nov 2020
    Location
    Eindhoven
    Posts
    1

    jpg file gedraaid na opslaan

    Ik heb een programma die een jpg file inleest, afmeting aanpast, omzet naar bmp en dan weer opslaat in jpg.
    Landscape gaat goed, portrait fotos zijn gedraait na opslaan.
    Na veel zoeken op internet blijkt dit iets te maken met de orientation van de foto.
    Hoe kan ik in Delphi de orientatie bepalen van een fotobestand en hoe kan ik de orientatie weer goed zetten na het opslaan ?

  2. #2
    Welkom!
    Ik weet niet precies hoe dat zou moeten in Delphi, maar wel dat het klopt. Jpeg afbeeldingen hebben een vlaggetje dat aangeeft wat hoe de afbeelding geroteerd moet worden. Je zal normaliter dus niet de pixels zelf hoeven te verplaaten, zoals in een bitmap, maar alleen die header aanpassen. Dat is gedaan, niet alleen omdat het lekker snel kan (handig voor foto's die in allerlei orientaties gemaakt kunnen worden), maar ook omdat je op die manier geen gegevens verliest bij het her-coderen van de jpeg afbeelding. Het is tenslotte een 'lossy format'.

    Ik zie alleen in de gauwigheid geen property of method in TJpgImage die die mogelijkheid ontsluit.

    Ik vond wel de Scale property. Dat is een soortgelijk trucje. Je kan daarmee aangeven wat de (default) schaal is voor het weergeven van de afbeelding. Alle oorspronkelijke informatie blijft in de afbeelding bestaan, maar het decoderen van de afbeelding gaat wel sneller als je hier een kleinere schaal opgeeft. Ik weet niet of dat nog nuttig kan zijn voor wat je wilt doen.
    1+1=b

  3. #3
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,240
    (Is dat overigens van de originele JPG standaard, of de latere jpeg2000 ?)

    De hoofdreden is dat jpg intern opgeslagen is als een matrix van blokjes (ik geloof origineel 8x8 pixels). Om ze te laten zien moet je altijd al handelingen (decompressie) uitvoeren, rotatie bij decompressie kost dan relatief niks.

    Bij BMP is typisch layout op disk 1:1 met layout in geheugen. (denk eraan dat BMP origineel bedoeld was voor systeem bitmaps en icoontjes, die snel bij constructie van een desktop geladen moesten worden op de soms sub 20MHz computers met 1-2MB geheugen waar Win3.0 mee uitgeleverd werd)

    Er is een keer een thread hier geweest over rotatie met de nativejpg library, die roteert op blok (ipv pixel) niveau.

  4. #4
    Waarschijnlijk bevat jouw jpg exif info die je kwijt raakt na je conversie naar bmp. In Gimp kun je bij menu>afbeelding>metadata de oriŽntatie van je afbeelding zien.

    Hoe je deze exif wegschrijft vanuit Delphi weet ik niet, maar nu weet je tenminste waar je op moet zoeken

  5. #5

  6. #6
    Member
    Join Date
    Aug 2003
    Location
    Vlaardingen
    Posts
    89
    Quote Originally Posted by guidovans View Post
    Ik heb een programma die een jpg file inleest, afmeting aanpast, omzet naar bmp en dan weer opslaat in jpg.
    Landscape gaat goed, portrait fotos zijn gedraait na opslaan.
    Na veel zoeken op internet blijkt dit iets te maken met de orientation van de foto.
    Hoe kan ik in Delphi de orientatie bepalen van een fotobestand en hoe kan ik de orientatie weer goed zetten na het opslaan ?
    http://www.bvbcode.com/code/37ghxe42-1643402

    Werkt om te bepalen hoe de foto gedraaid is.

    Je moet dan nog zelf de interne bitmap met code roteren en daarna geroteerd opslaan als jpg.

  7. #7
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,240
    Nog even de thread van image rotatie opgesnort: https://www.nldelphi.com/showthread....ight=nativejpg met name dus de bijdrage van Mie Roels e.v.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •