Introductie
Als je ooit een productfoto hebt opgeladen, het bedrijfslogo hebt ingesteld of een profielfoto hebt gekoppeld aan een medewerkerkaart in Odoo, heb je met het Image-veld gewerkt. Het is één van de meest zichtbare velden in het datamodel en duikt veel vaker op in de workflows dan gebruikers meestal doorhebben.
Voor eindgebruikers werkt het grotendeels automatisch: klikken, bestand kiezen, klaar. Voor consultants en ontwikkelaars daarentegen gebeurt er onder de motorkap meer: het veld heeft een specifieke opslaglogica, voert automatische aanpassingen uit en heeft enkele technische nuances die je beter kent voor je het veld structureel gaat inzetten in maatwerkmodellen.
Deze handleiding legt uit wat het Image-veld precies opslaat, hoe Odoo ermee omgaat, hoe je het toevoegt via Odoo Studio of in Python, en geeft concrete voorbeelden uit bedrijfsprocessen.
Wat is het Image-veld in Odoo
Sinds Odoo 13 bestaat er een dedicated Image-veldtype in de ORM, aangeduid als fields.Image. Voorheen combineerden ontwikkelaars fields.Binary met een image-widget om hetzelfde resultaat te bereiken. Het moderne Image-type verzorgt nu zelf het volledige levenscyclusbeheer van afbeeldingen, inclusief automatische schaling.
Technisch gezien wordt de afbeeldingsdata als binaire inhoud in base64 bewaard. In de database verschijnt die data meestal als een bijlage (ir.attachment) gekoppeld aan het record in plaats van rechtstreeks in de tabel te zitten. Die bijlage-gebaseerde opslag houdt de hoofdtabellen compact en maakt het leveren van beelden via voorspelbare URL’s efficiënt.
Weergave in de gebruikersinterface
In een formulier zie je het Image-veld als klikbare plaatshouder: gebruikers kunnen rechtstreeks een bestand opladen en soms ook een URL plakken. Het veld toont een preview-thumbnail in de formulierweergave, wat het snel herkenbaar en gebruiksvriendelijk maakt.
In lijstweergaven zie je beelden zelden omdat het ophalen van thumbnails de laadtijd kan vertragen. In kanban-views daarentegen is een kleine foto of avatar vaak handig om kaarten visueel te onderscheiden.
Image vs Binary in Odoo
Het onderscheid is belangrijk: Binary kan élk bestandstype houden — PDF, spreadsheet, ZIP — terwijl Image specifiek bedoeld is voor foto’s en logo’s. Image voert afbeelding-specifieke controles uit en past automatisch schalingen toe. Bewaar documenten in Binary; bewaar foto’s en logo’s in Image.
Hoe het veld werkt
Bij het uploaden behandelt Odoo een afbeelding niet als een simpele blob: er wordt vooraf verwerking uitgevoerd.
Automatische schaling
Het fields.Image veld accepteert parameters zoals max_width en max_height. Als een geüploade afbeelding groter is dan die grenzen, schaalt Odoo ze automatisch en behoudt daarbij de beeldverhouding. Dat gebeurt transparant bij het opslaan, zonder dat de gebruiker er iets van merkt.
Standaard is de maximale afmeting voor een Image-veld 1920 pixels langs de langste zijde. Daarom kom je vaak velden tegen met namen als image_1920 op modellen zoals product.template of res.partner.
Verschillende afbeeldingsformaten
In standaard Odoo-modellen zie je vaak een set gerelateerde afbeeldingsvelden: image_1920, image_1024, image_512, image_256 en image_128. Dit zijn apart gedefinieerde Image-velden die gerelateerd zijn aan het hoofdbeeld, elk met hun eigen formaatbeperkingen.
Zo kan Odoo contextafhankelijk de juiste maat leveren: een productoverzicht laadt liever image_128 om pagina’s snel te houden, terwijl de productdetailpagina het volledige image_1920 kan ophalen voor scherper tonen. Voor eigen modellen bepaal je zelf of die meerformaat-aanpak nodig is, afhankelijk van waar en hoe afbeeldingen getoond worden.
Opslag als bijlagen
Standaard worden Image-velden als Odoo-bijlagen opgeslagen. De binaire inhoud leeft dus in ir.attachment in plaats van direct in de recordtabel; het record verwijst naar die bijlage.
In de praktijk houdt dat de hoofdtabels compact en leveren afbeeldingen via voorspelbare paden zoals /web/image/product.template/42/image_1920 — een patroon dat vaak gebruikt wordt in websitepagina’s, e-mailsjablonen en API-antwoorden.
Toegangscontrole
Afbeeldingen volgen dezelfde toegangsregels als het onderliggende record. Heeft een gebruiker geen leesrechten op een product, dan kan die ook de afbeelding niet ophalen. De beveiligingslaag van Odoo regelt dit automatisch, wat belangrijk is om rekening mee te houden bij klantportals of publieke websitepagina’s.
Praktische bedrijfsgebruikscases
Waar je het Image-veld vaak tegenkomt in de praktijk
1. Productcatalogus (Verkoop en Voorraad)
Productafbeeldingen zijn waarschijnlijk de meest zichtbare toepassing. Elk producttemplate heeft een image_1920 en die beelden verschijnen in de webshop, op verkoopdocumenten, op POS-schermen en op mobiele picking-schermen.
Bedrijven met grote assortimentslijsten laden meestal afbeeldingen via de API in bulk in plaats van ze één voor één via de UI te uploaden. Het Image-veld accepteert base64-gecodeerde data, wat bulkuploads via XML-RPC of JSON-RPC eenvoudig maakt.
2. Klant- en leverancierslogo’s (CRM en Inkoop)
Het res.partner-model heeft een Image-veld voor contactfoto’s en bedrijfslogo’s. Die afbeelding verschijnt in het partnerformulier, in de chatter en in CRM-kanbankaarten. Met logos op accountkaarten navigeer je visueler en sneller door lange lijsten.
3. Werknemersfoto’s (HR)
Het hr.employee-model bewaart een werknemersfoto. Die foto zie je in het personeelsregister, soms op loonstroken en in Discuss naast berichten. HR-teams laden vaak in batch foto’s bij onboarding via bulkimport of de API.
4. Foto’s van apparatuur en assets (Maintenance)
In de Maintenance-module kun je een foto koppelen aan apparatuur. Technische dienstmedewerkers hebben zo op het onderhoudsorder een referentiebeeld van de machine, handig om direct te bevestigen dat ze aan het juiste toestel werken.
5. Inspecties en kwaliteitsformulieren op maat
Veel klanten bouwen maatwerkmodellen voor kwaliteitscontroles, site-inspecties of leveringsbevestigingen. Een Image-veld laat veldmedewerkers foto’s als bewijs toevoegen op het record — een veelgebruikte aanpassing via Studio of rechtstreeks in code.
Een Image-veld aanmaken of aanpassen
Twee manieren om een Image-veld toe te voegen: no-code via Studio of ontwikkelaarstools in Python.
Werken met Odoo Studio
Odoo Studio is de ingebouwde no-code aanpassingstool. Om een Image-veld toe te voegen activeer je Studio, open je de relevante app en ga je naar de formulierweergave waar je het veld wilt hebben.
Sleep in het veldenpaneel een Image-veld naar het formulier. Studio vraagt om een label en maakt automatisch het achterliggende veld aan op het model — ideaal voor functionele consultants en power users zonder ontwikkelaar inbreng.
Studio-velden krijgen conventioneel een x_studio_-voorvoegsel, bijvoorbeeld x_studio_site_photo, en gedragen zich verder hetzelfde als native Image-velden qua opslag en weergave.
Toevoegen via Python (ontwikkeling)
Voor technische customisaties definieer je Image-velden in een Python-model. Ontwikkelaars krijgen daarmee volledige controle over naamgeving, parametrisering en gerelateerde velden.
Voorbeeld van een eenvoudige modeldefinitie waarin een Image-veld wordt toegevoegd:
In dit voorbeeld geven max_width en max_height aan dat de afbeelding maximaal 1920 pixels mag zijn. Het tweede veld photo_128 is een gerelateerd veld dat een kleiner formaat bewaart voor gebruik in kanban of lijsten. Dit is de gebruikelijke aanpak in Odoo: één bronafbeelding met opgeslagen miniaturen voor verschillende contexten.
Het veld zichtbaar maken in een view
Als het veld op het model bestaat, moet je het in een view opnemen om het in de interface te tonen. In XML voeg je het toe met widget="image":
<field name="photo" widget="image" class="oe_avatar"/>
De klasse oe_avatar plaatst het veld als cirkelvormige avatar linksboven in het formulier, de standaard Odoo-styling. Je kunt het ook zonder die klasse inline gebruiken binnen een formulieropmaak.
Aanbevelingen & goede gewoontes
Aanbevelingen die we klanten meegeven bij Image-velden
Stel realistische groottegrenzen in
De standaardlimiet van 1920 pixels is voor de meeste toepassingen voldoende. Verhoog die enkel als het echt nodig is (bijvoorbeeld hoge resolutie voor drukwerk). Grotere beelden leiden tot zwaardere bijlagen, grotere database en tragere paginalaadtijden.
Maak een thumbnail-variant voor lijsten en kanban
Als je beelden in lijst- of kanbanweergaven toont, definieer een apart klein gerelateerd veld op 128 of 256 pixels. Een 128-pixel thumbnail laden is veel sneller dan telkens de volledige 1920-versie op te halen.
Gebruik de API voor bulkuploads
Bij honderden of duizenden beelden upload je niet handmatig via de UI. Gebruik XML-RPC of JSON-RPC om base64-afbeeldingen geautomatiseerd naar Odoo te pushen — veel sneller en eenvoudig scriptbaar. De ontwikkelaarsdocumentatie bevat voorbeelden hiervoor.
Comprimeer beelden vooraf
Odoo schaalt automatisch, maar comprimeert niet altijd agressief. Een 5 MB JPEG die naar 1920 pixels wordt geschaald blijft mogelijk enkele honderden kilobytes groot. Vooraf comprimeren houdt bijlagen kleiner, wat zeker bij grote catalogi loont.
Vermijd Image-velden in veelgevraagde lijsten
Een Image-kolom in een lijst dwingt Odoo om binaire data voor elke zichtbare rij te halen, wat lijsten merkbaar kan vertragen. Gebruik enkel een kleine thumbnail waar noodzakelijk en bewaar de grote afbeelding voor de formulierweergave.
Veelvoorkomende valkuilen
De meest gemaakte fouten bij Image-velden
Binary en Image door elkaar halen
Een Binary-veld zonder image-widget toont een downloadknop in plaats van een preview. Voor juiste weergave heb je ofwel fields.Image nodig of fields.Binary met expliciet widget="image" in de view. Dit misverstand komt vaak voor, vooral bij oudere Odoo-versies.
Te laat nadenken over formaatvarianten
Het is eenvoudig om één groot Image-veld toe te voegen, maar als je later miniaturen nodig hebt voor een kanban of website, vergt het toevoegen van gerelateerde velden soms een migratie. Denk de formaatvarianten dus vroeg in je ontwerp mee.
Beelden rechtstreeks in de hoofdtabellen opslaan
In verouderde of slecht geconfigureerde installaties kan binaire data direct in velden worden bewaard in plaats van als bijlagen. Dat blaast hoofdtabellen op en vertraagt queries. Zorg dat je Odoo is ingesteld om bijlagen extern of in S3-compatibele opslag te bewaren indien nodig.
Image-velden gebruiken als documentopslag
Sommige gebruikers bewaren scans of meervoudige documenten in Image-velden. Dat werkt technisch, maar is niet de juiste keuze. Voor documentbeheer gebruik je de Documents-module of een Binary-veld met downloadfunctionaliteit. Image-velden zijn bedoeld voor foto’s en logo’s, niet voor meerbladige documenten.
Toegangsregels vergeten op publieke pagina’s
Als je afbeeldings-URL’s op een publieke website plaatst maar het onderliggende record is niet publiek leesbaar, krijg je 404-fouten. Controleer bij het bouwen van websitepagina’s of portalen altijd dat de beelden toegankelijk zijn voor de beoogde doelgroep.
Conclusie
Het Image-veld lijkt simpel aan de oppervlakte, maar heeft genoeg technische details om teams zonder planning te verrassen. Kennis van Odoo’s automatische schaling, bijlage-opslag en het multi-formaatpatroon voorkomt later veel werk.
Voor eindgebruikers is het nuttig te weten dat afbeeldingen veilig op het record bewaakt worden en via voorspelbare URL’s beschikbaar komen. Voor ontwikkelaars is het patroon van fields.Image plus gerelateerde thumbnailvelden de standaardpraktijk — maak je daar vroeg vertrouwd mee.
Of je nu een productfoto toevoegt, een inspectiefoto koppelt aan een maatwerkmodel of een klantportaal inricht met bedrijfslogo’s: het Image-veld biedt een nette, geïntegreerde manier om visuele data binnen het Odoo-datamodel te beheren.
Hulp nodig met je Odoo-implementatie?
Bij Dasolo ondersteunen we organisaties met implementatie, maatwerk en optimalisatie van Odoo over verschillende modules en versies. Of het nu gaat om velden op standaardmodellen, compleet maatwerk of data-migraties uit oudere systemen: wij werken praktisch met je team samen om Odoo af te stemmen op hoe jouw bedrijf écht werkt.
Heb je vragen over je Odoo-configuratie of wil je weten wat er mogelijk is met het platform, neem contact met ons op— we helpen je graag.