Spring naar de content

Op deze pagina:

Informatie over het Nexime systeem.

Pagina-navigatie:

Gereedschappen


Wat is Nexime?

PHP, een programmeertaal voor webapplicaties, heeft standaard een beperkt aantal functies voor het maken en verwerken van afbeeldingen en foto's. Nexime is een uitbreiding voor PHP waarmee de grafische mogelijkheden van PHP drastisch worden vergroot. Het is vooral geschikt voor het verwerken van foto's voor internettoepassingen.

Een PHP programmeur kan met Nexime zeer eenvoudig dynamisch server side fotografische bewerkingen uitvoeren zoals het aanpassen van helderheid, kleur, contrast, scherpte. Maar ook speciale effecten zoals sepia, emboss, kleurinverse, filters behoren tot de standaardmogelijkheden. En omdat Nexime volledig programmeerbaar is, kan de programmeur zelf nieuwe effecten ontwerpen. Dat gaat volledig on-the-fly, en behoeft geen hercompilatie, herstart of herconfiguratie van de webserver.

Live demonstratie!

Hier kun je Nexime live uitproberen. Boven staat de originele afbeelding, daaronder dezelfde afbeelding maar bewerkt met Nexime. Je kunt experimenteren met de features, en de resultaten worden meteen zichtbaar!

The original:
original
Nexime image processing:
processed with Nexime You can chose up to five operation which will be applied to the original photo. The operations are stacked; every operation is applied to the result of the previous step.

1:
2:
3:
4:
5:

Deze demo maakt gebruik van een beperkt aantal mogelijke waardes. Uiteraard is Nexime flexibeler dan dat!

Toepassingen

Traditionele Content Management Systemen zijn prima in staat voor het beheren van teksten van sites. Gebruikers kunnen veelal ook afbeeldingen uploaden, om te gebruiken in de site. Maar de mogelijkheden om die afbeeldingen nog te verbeteren of aan te passen, zoals roteren, verkleinen, effecten, zijn erg beperkt.

Nexime kan dat gat invullen, aangezien het uiterst geschikt is voor dit soort online beeldbewerking. Gebruikers van een CMS kunnen dan naast het beheren van de teksten ook hun foto's beheren. Daarvoor is dan geen speciale software meer nodig.

Momenteel wordt Nexime gebruikt in het online fotoalbum →. Nexime verzorgt daar het automatisch schalen van de foto's, eventueel roteren, het maken van de thumbnails, het verbeteren van de kwaliteit en het optimaliseren van de foto's voor internet-gebruik.
Mocht een fotograaf naderhand bepalen dat de foto's bijv. groter moeten worden weergegeven, dan verzorgt Nexime automatisch voor het vergroten van de foto. Daarbij wordt de originele foto gebruikt, voor behoud van kwaliteit.

Naast het fotoalbum, wordt Nexime ook gebruikt op de 3D pagina →. Nexime verzorgt hier het samenvoegen van twee afbeeldingen tot één, om te kunnen bekijken middels een 3D brilletje of de "scheelkijktechniek".

Structuur van Nexime

Het Nexime systeem bestaat uit 3 lagen:
  • De PHP extensie. ↓ Geschreven in ANSI C, en het eigenlijke hart van het systeem. Hier worden alle bewerkingen uitgevoerd.
  • BIOps. Geschreven in PHP, en fungeert als soort van API voor de low-level functies voor de PHP extensie.
  • Graphlets. Geschreven in PHP. Graphlets zijn kant en klare, eenvoudige te gebruiken en stapelbare functies voor het bewerken van afbeeldingen. Zeer geschikt voor het opslaan van een serie van bewerkingen in een database.

PHP extensie

De basis

De PHP extensie vormt het hart van het Nexime systeem. Hier worden alle grafische bewerkingen uitgevoerd. De extensie is geschreven in ANSI C, en daarmee is de uitvoersnelheid hoog en is Nexime eenvoudig te porteren naar andere platformen.

PixelPrograms

Het unieke van het systeem is dat het een eigen scripting-taal heeft. Vrijwel alle bewerkingen, ook die uit de Live demo hierboven, zijn geprogrammeerd in z.g.n. PixelPrograms. Deze speciaal voor afbeeldingen ontworpen scripting-taal is ook direct beschikbaar voor PHP programmeurs. De programmeur kan een bestaande bewerking of effect eenvoudig aanpassen, of zelfs hele nieuwe effecten ontwerpen.

Voor uitvoering van de PixelProgram code gebruikt Nexime een soort van Just In Time compiler, die sterk voor snelheid is geoptimaliseerd. Daardoor is het geen probleem om meerdere bewerkingen na elkaar op 1 afbeelding uit te voeren.

Nauwkeurigheid

Normale afbeeldingen zijn 24-bit kleur, oftewel 8-bit integer getallen per kleurkanaal. Omdat Nexime zeer geschikt is voor het uitvoeren van meerdere bewerkingen op 1 afbeelding (bijv. verscherpen, automatische contrast verbetering, kleuren intensiever maken en gamma correctie) zouden deze 8-bit waarden te weinig zijn voor het behouden van een goede kwaliteit. Intern gebruikt Nexime dan ook 32-bit floating point getallen per kleurkanaal, dat zijn dus 96-bit kleuren!

Hoewel het rekenen en verwerken van deze extra kleurinformatie iets trager is, is Nexime op een huidige server meer dan krachtig genoeg voor het uitvoeren van meerdere bewerkingen per seconde op een afbeelding.

Dit nadeel weegt dan ook niet op tegen de voordelen van 96-bit floating point kleuren:
  • Geen verlies van oorspronkelijke kleurinformatie, waarmee het 'banding effect' voorkomen wordt.
  • Mogelijkheid tot rekenen met kleuren "witter dan wit" en "zwarter dan zwart", m.a.w. geen clipping meer van waarden.

Interesse in Nexime?

nexime logoMomenteel is Nexime closed-source en beheer ik het zelf. Wegens andere werkzaamheden kom ik er helaas niet aan toe om het echt beschikbaar te stellen. Dat is jammer, want het is een krachtige en flexibele techniek die breed inzetbaar is. De code ANSI C, waardoor het zeer eenvoudig te porten is naar andere platforms dan het Windows platform waar het nu op draait.

Ik zie twee opties:

  1. Open Source. Helaas heb ik geen ervaring met de ontwikkeling van Open Source software en de valkuilen daarbij.
    Het zou fantastisch zijn als Nexime een standaard extensie van het PHP wordt.
  2. Commercieel gebruik. Ik zie vaak sites waar ik denk: "Goh, Nexime kan hier wonderen verrichten". Bijvoorbeeld veilingsites waar mensen hun eigen foto's uploaden. Vaak laat de belichting te wensen over. Nexime kan dat veelal automatisch corrigeren. Maar ook voor een CMS kan Nexime de sitebeheerders veel meer mogelijkheden bieden voor het beheren van afbeeldingen. (Denk aan productfoto's e.d.)

Mocht je interesse in Nexime hebben en mee willen werken om er een fraai Open Source product van te maken, of zie je mogelijkheden voor Nexime binnen je eigen product of website, of beide (!), neem dan zeker contact → met mij op! Er is reeds een uitgebreide Engelstalige handleiding/naslagwerk beschikbaar met meer informatie welke ik graag aan geïnteresseerden zal sturen!

Site-informatie