[PHP] Jpeg DPI waarde bepalen van geuploade bestanden

Pagina: 1
Acties:
  • 187 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • dsmeef
  • Registratie: Oktober 2002
  • Laatst online: 08-06-2024
Ik wil on the fly de DPI waarde bepalen van een geuploade JPEG. Zo kan ik bepalen of de kwaliteit van een toegestuurde foto hoger is dan 150 dpi en groter is dan 640x480 (of 480x640).

Ik heb geprobeerd om de header uit te lezen om zo te zien wat de DPI waarde is. Dit werkt prima voor JFIF jpegs (opgeslagen via bijvoorbeeld Photoshop), maar alle andere jpegs die de header anders opbouwen geven geen geldige waarde terug..

Nou is JPEG eigenlijk een verzameling van allerlei formaten in een, en ik vraag me af of er sowieso een manier is om on the fly de DPI waarde van ALLE jpeg formaten uit te lezen.

Ik weet dat jpeg eigenlijk geen DPI ondersteund, omdat het een pixel formaat is, dus dan zou photoshop die DPI waarde emuleren? Een JPEG is dan altijd 72dpi? Maar dan zou je de pixel afmeting toch ergens moeten kunnen uitlezen? Want in het geval van emulatie betekend het dat photoshop voor een 640x480 jpeg op 150 dpi eigenlijk 1333x1000 opslaat aan pixels ( dat is dus: ((640/72)*150) x ((480/72)*150) )

Het liefst wil ik een manier om het uit te lezen via de header van de JPEG, dan dat ik de hele file in php laat bewerken.. Wat natuurlijk resource onvriendelijker is..

De meest handige pagina die ik heb kunnen vinden is de volgende:
http://www.funducode.com/...mats/format3/format3b.htm

Maar ik kom er niet meer uit.. Ik kijk vast over iets heen ofzo.. Help :?

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 20-09 22:44

MBV

Waar wil je het voor gebruiken? Waarschijnlijk wil je een preview altijd even groot hebben enzo, dus die DPI waarde is dan vrij nutteloos. De DPI waarde zegt niks over de resolutie, maar wel over de grootte waarop het moet worden afgedrukt en geprint op het scherm, de 'zoom' factor.

Dus gewoon de hoogte en breedte in pixels opvragen lijkt mij voldoende.

Acties:
  • 0 Henk 'm!

  • dsmeef
  • Registratie: Oktober 2002
  • Laatst online: 08-06-2024
het gaat erom dat de foto die gestuurd wordt van een dusdanige kwaliteit is dat deze gedrukt kan worden. daarom moet een plaatje minimaal 640x480 zijn en een minimum van 150 dpi hebben. als het puur voor het scherm was, was het toch altijd 72dpi geworden, maar aangezien het voor printers is (uiteindelijk), is de dpi waarde wel van belang..

in ieder geval moet ik iets hebben dus waarmee ik kan bepalen of een plaatje groter is dan of gelijk is aan 640x480 (via php getimagesize) en minimaal 150 dpi heeft.. maar wellicht zit ik wel helemaal verkeerd te denken hoor.. in dat geval word ik graag weer de goede richting in geduwd :)

Acties:
  • 0 Henk 'm!

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 15:19

voodooless

Sound is no voodoo!

Kun je niet gewoon kijken naar het aantal pixels en dan gewoon aannemen dat die dpi's wel goed zitten. Je kunt dan bij het afdrukken toch zelf aangeven hoe groot je het plaatje wil afdrukken.

Do diamonds shine on the dark side of the moon :?


Acties:
  • 0 Henk 'm!

  • dsmeef
  • Registratie: Oktober 2002
  • Laatst online: 08-06-2024
een 640x480 @ 150 dpi plaatje geeft in php via getimagesize terug dat het plaatje 640x480 breed is, in plaats van wat ik zou verwachten: 1333x1000.. dus dat werkt niet echt, of bedoel je het op een andere manier?

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 16:28
Je denkt nog steeds verkeerd. Een plaatje heeft een grootte in pixels. Een gedrukte afbeelding heeft een formaat in inches. De verhouding daartussen is het aantal DPI en die volgt uit het aantal pixels (of dots) en de grootte waarop je drukt. De drie waarden zijn onderling afhankelijk: je kiest er twee en de derde staat vanzelf vast.

Als je dus weet op welk formaat en op welke resolutie (DPI) je wilt drukken dan kun je direct berekenen wat de dimensies in pixels van je plaatjes moeten zijn. De enige reden dat programma's als fotoshop het mogelijk maken om een resolutie op te slaan bij een plaatje is dat je daarmee de oorspronkelijke grootte terug kunt rekenen. In het bestandsformaat is het dus gewoon een getalletje; niets meer.

Alle plaatjes van 640 bij 480 zijn dus hetzelfde, ongeacht welke resolutie er bij aangegeven is. Een plaatje van 640 bij 480 en 150 DPI bevat niet meer pixels dan een plaatje op 300 DPI. In beide gevallen zijn er 640 x 480 pixels.

Mijn vraag aan jou is nu: welke eisen wil je precies stellen? Als je bijvoorbeeld op 150 DPI een plaatje van 6 bij 4 inch wilt printen, dan moet je eisen dat het geuploade plaatje tenminste 900 bij 600 pixels groot is. Dat kun je natuurlijk simpel te controleren.

[ Voor 13% gewijzigd door Soultaker op 12-06-2004 20:34 ]


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 20-09 22:44

MBV

Dat is ook mijn punt, deepspace. Om iets af te drukken op 150 dpi met een resolutie van 150dpi is vrij zinloos, tenzij het om postzegels gaat. 640d/150dpi ~= 4 inch, 480d/150dpi ~= 3 inch, niet echt groot dus (6 bij 4,5 cm). Je moet gewoon een minimum resolutie opgeven die hoog genoeg licht voor het beoogde formaat. Is dat beoogde formaat altijd 10*15, dan kan je 1800*1200 pixels opgeven als minimumresolutie.
edit:
spuit elf.... moet ik maar leren uitleggen ;)

edit:
nr2: @deepspace: en een binas kopen zodat ik de verhouding cm/inch kan weten :X en niet 150 met 300 dpi verwarren :X zo te zien tijd om te gaan slapen :+

[ Voor 23% gewijzigd door MBV op 12-06-2004 21:01 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Ik denk dat je een beetje verkeerd zit. DPI is alleen van belang als je een plaatje gaat afdrukken op een bepaalde grootte.
Als je het plaatje van 640x480 wilt afdrukken op postzegel formaat (zeg maar ongeveer 1 x 1,5 cm) dan krijg je een afdruk van ongeveer 1000 DPI (beetj grof gerekend) omdat je de 640 pixels van je plaatje over een lengte van 1,5 cm verdeeld.

Wil je het echter afdrukken op a4 formaat (297x211 mm) dan zal de resolutie veel lager zijn, ongeveer 55 DPI.

Dus het heeft niet zoveel zin om te controleren of je plaatje groter is dan 640x480 en of de resolutie hoger is dan 150 DPI. De DPI waarde heeft eigenlijk geen betekenis totdat je de pixels van je plaatje op een fysiek medium (papier) gaat afdrukken op een bepaalde grootte.

edit:
te laat, moet wat sneller leren typen

[ Voor 8% gewijzigd door Verwijderd op 12-06-2004 20:45 ]


Acties:
  • 0 Henk 'm!

  • dsmeef
  • Registratie: Oktober 2002
  • Laatst online: 08-06-2024
hmm, alle 3 handige informatie in ieder geval, dank :)

Soultaker: het zal gaan om 13x18 cm en met een minimum van 640x480 aan pixels

Acties:
  • 0 Henk 'm!

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 15:19

voodooless

Sound is no voodoo!

MBV: Beter narekenen: (640/150) *2.54 = 10.84 cm en niet 6. Als je bij het afdrukken gewoon de benodigde DPI's berekend aan hand van het aantal pixels en het beoogde formaat (in cm of inch), dan kom je altijd goed uit!

Als je dus 13x18 wil hebben @480x640:

640/(18/2.54) = ~90 dpi

heb je een groter plaatje, bv 768x1024:

1024/(18/2.54) = ~144 dpi

@Soultaker: hij wil waarschijnlijk een plaatje dat staat i.p.v liggend.

[ Voor 41% gewijzigd door voodooless op 12-06-2004 20:58 ]

Do diamonds shine on the dark side of the moon :?


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 16:28
Dat is krom. Dan heb je horizontaal een resolutie van 125 DPI en verticaal een resolutie van 67 DPI. Als je op 13x18 cm wil afdrukken met 150 DPI moet je 768x1063 pixels eisen.

Acties:
  • 0 Henk 'm!

  • dsmeef
  • Registratie: Oktober 2002
  • Laatst online: 08-06-2024
ok, dus via php getimagesize zou ik kunnen afvangen of het plaatje 768x1063 pixels heeft..? dan komt het altijd goed..?

Acties:
  • 0 Henk 'm!

  • dsmeef
  • Registratie: Oktober 2002
  • Laatst online: 08-06-2024
en @ deepspace, nee staand en liggend is beide mogelijk.. boeit dus niet, vandaar dat ik het wellicht door elkaar gebruikt heb, waarvoor excuses :)

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 20-09 22:44

MBV

Yep, dsmeef, nu snap je hem. Exuses voor wat rekenslordigheidjes.... :)

Acties:
  • 0 Henk 'm!

  • dsmeef
  • Registratie: Oktober 2002
  • Laatst online: 08-06-2024
ok, dus voor het vervolg (dat ik het 'algorithme' goed snap):

je bepaalt voor jezelf wat je als minimum aan DPI wilt, je kijkt waar het op afgedrukt moet worden, neemt de maat daarvan in inches, en rekent dat terug naar pixels volgens: gewenste DPI waarde * inches van uiteindelijke doel

toch? :)

maaarrrr.. een andere site waar het op werkt kan je een image van 640x480@72 dpi uploaden, die komt niet door de validatie. als je een image van 640x480@150 dpi upload, gaat het wel goed.. dus op een of andere manier is die DPI waarde toch te zien ofzo..?
ik snap er niet veel meer van :)

[ Voor 34% gewijzigd door dsmeef op 12-06-2004 21:09 ]


Acties:
  • 0 Henk 'm!

  • Gwaihir
  • Registratie: December 2002
  • Niet online
Heeft een JPG bestand informatie over het aantal DPI wat de maker in gedachten had in z'n header?

Ik dacht dat de maten van jpeg puur in pixels gingen (en dat een jpeg dus niet zoals bijvoorbeeld een tiff vaak ook "weet" dat hij X x Y cm @ Z dpi bedoeld is).

@dsmeef: wat maakt het nu uit of een plaatje 640x480 @72 of @150 dpi is? Het blijft 640x480 pixels aan info. Wanneer je bijvoorbeeld 10x15 cm gaat meten, dan maakt het aantal dpi uit voor het aantal pixels wat je in totaal tot je beschikking hebt (en uitgaande van perfect foto's dus ook voor de (afdruk)kwaliteit die je kunt behalen).

[ Voor 49% gewijzigd door Gwaihir op 12-06-2004 21:17 ]


Acties:
  • 0 Henk 'm!

Verwijderd

maaarrrr.. een andere site waar het op werkt kan je een image van 640x480@72 dpi uploaden, die komt niet door de validatie. als je een image van 640x480@150 dpi upload, gaat het wel goed.. dus op een of andere manier is die DPI waarde toch te zien ofzo..?
ik snap er niet veel meer van :)
Die site snapt er dan ook niet veel van. Misschien moet je ze eens een mailtje sturen dat ze dit topic eens even lezen.

Acties:
  • 0 Henk 'm!

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 15:19

voodooless

Sound is no voodoo!

Birdie schreef op 12 juni 2004 @ 21:13:
Heeft een JPG bestand informatie over het aantal DPI wat de maker in gedachten had in z'n header?

Ik dacht dat de maten van jpeg puur in pixels gingen (en dat een jpeg dus niet zoals bijvoorbeeld een tiff vaak ook "weet" dat hij X x Y cm @ Z dpi bedoeld is).
Waarschijnlijk niet de letterlijke DPI's, maar de werkelijke geprinte grootte in inches :) Je kunt dan de DPI's weer terugrekenen.

[ Voor 4% gewijzigd door voodooless op 12-06-2004 21:16 ]

Do diamonds shine on the dark side of the moon :?


Acties:
  • 0 Henk 'm!

  • dsmeef
  • Registratie: Oktober 2002
  • Laatst online: 08-06-2024
Ok, dan is mijn perceptie op DPI en pixels ook weer even rechtgezet :)

Dus ik moet uitgaan van 1063 x 768 pixels voor 18x13 cm (of vice versa deepspace ;))
DPI waarde is gewoon niet relevant dan.. Of zit ik er nou weer naast? :D

Acties:
  • 0 Henk 'm!

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 15:19

voodooless

Sound is no voodoo!

dsmeef schreef op 12 juni 2004 @ 21:23:
Ok, dan is mijn perceptie op DPI en pixels ook weer even rechtgezet :)

Dus ik moet uitgaan van 1063 x 768 pixels voor 18x13 cm (of vice versa deepspace ;))
DPI waarde is gewoon niet relevant dan.. Of zit ik er nou weer naast? :D
Het is idd niet relevant als je bij het printen op kunt geven hoe groot het plaatje moet worden, of hoeveel DPI het moet zijn. Hoe ga je printen is dan de vraag...?

Do diamonds shine on the dark side of the moon :?


Acties:
  • 0 Henk 'm!

  • dsmeef
  • Registratie: Oktober 2002
  • Laatst online: 08-06-2024
het plaatje zou automatisch geresized moeten worden naar een 13x18 formaat.. zodat de printer het altijd in 1x kan uitprinten.. maar dat automatisch resizen zal niet op tijd af kunnen geraken dus dat wordt voorlopig handmatig gedaan vrees ik..

toch blijf ik het dan vreemd vinden dat die andere site kan zien dat een image een dpi waarde heeft.. en verschil ziet in een 640x480 bestand op 72 of 150 dpi.. terwijl dat dus hetzelfde zou moeten zijn als ik jullie goed begrijp..

Acties:
  • 0 Henk 'm!

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 15:19

voodooless

Sound is no voodoo!

Als je PHP gebruikt, moet je eens naar http://www.imagemagick.org/ kijken. Daar kun je prima me resizen :)

Do diamonds shine on the dark side of the moon :?


Acties:
  • 0 Henk 'm!

  • dsmeef
  • Registratie: Oktober 2002
  • Laatst online: 08-06-2024
die site checkt waarschijnlijk de headers van JFIF jpeg files, om te zien of de DPI waarde 150 is en of het bestand dan minimaal 640x480 is, als het geen JFIF jpeg file is, dan wordt de minimale resolutie van 1063x768 aangehouden. als maximum geldt een bestandsgrootte van 3mb..
in ieder geval ga ik dat ook maar doen, want dat is wat de klant nagebouwd wilt zien.. zal wel ff uitleggen dat dit niet de manier is waarop het zou moeten :)

en thanks voor die link deepspace!

Acties:
  • 0 Henk 'm!

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 15:19

voodooless

Sound is no voodoo!

dsmeef schreef op 12 juni 2004 @ 21:58:
die site checkt waarschijnlijk de headers van JFIF jpeg files, om te zien of de DPI waarde 150 is en of het bestand dan minimaal 640x480 is, als het geen JFIF jpeg file is, dan wordt de minimale resolutie van 1063x768 aangehouden. als maximum geldt een bestandsgrootte van 3mb..
in ieder geval ga ik dat ook maar doen, want dat is wat de klant nagebouwd wilt zien.. zal wel ff uitleggen dat dit niet de manier is waarop het zou moeten :)

en thanks voor die link deepspace!
BTW Hou dan liever 1024x768 aan, dat is wat meer standaard dan 1063 ;)

Do diamonds shine on the dark side of the moon :?

Pagina: 1