a:blip (Blip/Image Reference)
Specifies an image/picture reference that can be embedded, linked, or modified with effects.
Parent elements
Child elements
Description
\:blip\ is the DrawingML element that references an image/picture for use in presentations, documents, and spreadsheets. It is defined in ECMA-376 Part 1 §20.1.2.2.1.
Blip elements provide:
- Embedded images: Store image data within package
- Linked images: Reference external image files
- Image effects: Apply filters (grayscale, duotone, tint, saturation)
- Alpha/transparency: Adjust image opacity
- Color modifications: Brighten, darken, recolor images
- Relationship management: Link to image relationships
Blip elements support:
- JPEG, PNG, GIF, BMP, TIFF, WMF, EMF image formats
- Embedded and linked image modes
- Multiple image effect filters
- Compression and optimization
- Color space specifications
Blip differs from:
- Blip fill (\:blipFill) — Shape fill using image (contains blip)
- Picture (\p:pic) — Picture shape in presentations
- Image source — Raw file (blip references it)
Attributes
| Attribute | Type | Description |
|---|---|---|
| \ | ||
| :embed\ | Relationship ID | References embedded image relationship |
| \ | ||
| :link\ | URI | URL/path to linked external image |
| \cstate\ | Compression state | “none”, “print”, “screen” |
Note: Either
:embed\ (embedded) OR
:link\ (linked), not both.
Content Model
\:blip\ children (all optional, 0–1):
- Image effects (choose one or more):
- \:alphaModFix\ — Fixed alpha modification
- \:alphaMod\ — Alpha modulation with effect
- \:alphaRepl\ — Alpha replacement
- \:duotone\ — Duotone effect
- \:grayscl\ — Grayscale effect
- \:lumMod\ — Luminance modulation
- \:lumOff\ — Luminance offset
- \:tint\ — Color tint
- \:shade\ — Color shade
- \:sat\ — Saturation
- \:satMod\ — Saturation modulation
- \:hue\ — Hue shift
- \:cSpc\ — Color space
- a:ext (0–1) — Extended properties (future)
Examples
Simple Embedded Image
<a:blipFill>
<a:blip r:embed="rId4" cstate="print">
<a:alphaModFix amt="100000"/>
</a:blip>
<a:stretch>
<a:fillRect/>
</a:stretch>
</a:blipFill>
using DocumentFormat.OpenXml.Drawing;
using DocumentFormat.OpenXml.Packaging;
var blipFill = new BlipFill();
var blip = new Blip { Embed = "rId4", CompressionState = "print" };
var alphaModFix = new AlphaModulationFixed { Amount = 100000 };
blip.Append(alphaModFix);
blipFill.Append(blip);
var stretch = new Stretch();
stretch.Append(new FillRectangle());
blipFill.Append(stretch);
Linked External Image
<a:blipFill>
<a:blip r:link="https://example.com/image.jpg" cstate="screen"/>
<a:stretch>
<a:fillRect/>
</a:stretch>
</a:blipFill>
var blipFill = new BlipFill();
var blip = new Blip
{
Link = "https://example.com/image.jpg",
CompressionState = "screen"
};
blipFill.Append(blip);
var stretch = new Stretch();
stretch.Append(new FillRectangle());
blipFill.Append(stretch);
Image with Grayscale Effect
<a:blip r:embed="rId4">
<a:grayscl/>
</a:blip>
var blip = new Blip { Embed = "rId4" };
var grayscl = new Grayscale();
blip.Append(grayscl);
Image with Duotone Effect
<a:blip r:embed="rId4">
<a:duotone>
<a:srgbClr val="0070C0"/>
<a:srgbClr val="FFD700"/>
</a:duotone>
</a:blip>
var blip = new Blip { Embed = "rId4" };
var duotone = new Duotone();
var color1 = new RgbColorModelHex { Val = "0070C0" };
var color2 = new RgbColorModelHex { Val = "FFD700" };
duotone.Append(color1);
duotone.Append(color2);
blip.Append(duotone);
Image with Tint and Transparency
<a:blip r:embed="rId4">
<a:alphaMod>
<a:alphaModFix amt="75000"/>
</a:alphaMod>
<a:tint val="CCE5FF"/>
</a:blip>
var blip = new Blip { Embed = "rId4" };
var alphaMod = new AlphaModulation();
var alphaModFix = new AlphaModulationFixed { Amount = 75000 };
alphaMod.Append(alphaModFix);
blip.Append(alphaMod);
var tint = new Tint { Val = "CCE5FF" };
blip.Append(tint);
Image with Saturation Adjustment
<a:blip r:embed="rId4">
<a:satMod val="150000"/>
</a:blip>
var blip = new Blip { Embed = "rId4" };
var satMod = new SaturationModulation { Val = 150000 };
blip.Append(satMod);
Image Format Support
| Format | Extension | Compression | Support |
|---|---|---|---|
| JPEG | .jpg, .jpeg | Lossy | Full |
| PNG | .png | Lossless | Full |
| GIF | .gif | Lossless | Full |
| BMP | .bmp | Uncompressed | Full |
| TIFF | .tif, .tiff | Lossless | Full |
| WMF | .wmf | Vector | Full |
| EMF | .emf | Vector | Full |
| SVG | .svg | Vector | Partial |
Compression States
| State | Purpose | Output |
|---|---|---|
| none | No compression | Original quality, larger file |
| Print-quality compression | Optimized for printing (300 DPI) | |
| screen | Screen-quality compression | Optimized for display (72-96 DPI) |
Image Effects Reference
Transparency Effects
| Effect | Purpose | Parameters |
|---|---|---|
| \:alphaModFix\ | Fixed alpha (opacity) | amt: 0-100000 (0% = transparent, 100% = opaque) |
| \:alphaMod\ | Alpha modulation with effect | Nested effect element |
| \:alphaRepl\ | Replace alpha channel | a: 0-100000 |
Color Effects
| Effect | Purpose | Parameters |
|---|---|---|
| \:grayscl\ | Convert to grayscale | None (binary effect) |
| \:duotone\ | Two-color effect | Color1, Color2 (srgbClr or schemeClr) |
| \:tint\ | Color tint overlay | val: RGB hex value |
| \:shade\ | Darken with black | val: 0-100000 (darker) |
| \:sat\ | Absolute saturation | val: 0-100000 |
| \:satMod\ | Saturation modification | val: 0-100000 (50000 = no change) |
| \:hue\ | Hue rotation | val: 0-21600000 (1/60000 degree) |
| \:lumMod\ | Luminance modulation | val: 0-100000 |
| \:lumOff\ | Luminance offset | val: -100000 to +100000 |
Composite Effects
Multiple effects can be applied (processed in order):
xml
<a:blip r:embed="rId4">
<a:grayscl/>
<a:satMod val="80000"/>
<a:lumMod val="120000"/>
</a:blip>
Processed: Grayscale → Reduce saturation → Increase luminance
Relationship Management
Embedded Images
Relationship file (document.xml.rels or similar):
`xml
`
Reference in blip:
xml
<a:blip r:embed="rId4"/>
Linked Images
Direct URL or path:
xml
<a:blip r:link="https://example.com/image.jpg"/>
No relationship needed for external links.
Alpha Modulation Values
| Value | Meaning | Transparency |
|---|---|---|
| 0 | Fully transparent | 100% transparent |
| 25000 | 25% opaque | 75% transparent |
| 50000 | 50% opaque | 50% transparent |
| 75000 | 75% opaque | 25% transparent |
| 100000 | Fully opaque | 0% transparent |
Common Patterns
Standard Embedded Image
xml
<a:blip r:embed="rId4" cstate="print">
<a:alphaModFix amt="100000"/>
</a:blip>
Linked Web Image
xml
<a:blip r:link="https://example.com/logo.png"/>
Image with Multiple Effects
xml
<a:blip r:embed="rId4">
<a:grayscl/>
<a:satMod val="75000"/>
<a:lumMod val="110000"/>
<a:alphaMod>
<a:alphaModFix amt="80000"/>
</a:alphaMod>
</a:blip>
Blip in Context
Full picture example:
`xml
`
Rendering Behavior
| Effect | When Applied | Visual Result |
|---|---|---|
| Transparency | Before other effects | Base alpha layer |
| Grayscale | Early in chain | Converts color → gray |
| Saturation | Mid-chain | Adjusts color intensity |
| Duotone | Late in chain | Maps to two colors |
| Luminance | Post-processing | Final brightness adjustment |
Compatibility Matrix
| Feature | PowerPoint | Word | Excel | Notes |
|---|---|---|---|---|
| Embedded images | ✓ | ✓ | ✓ | Full support |
| Linked images | ✓ | ✓ | ✓ | URL depends on context |
| Grayscale | ✓ | ✓ | ✓ | Consistent |
| Duotone | ✓ | Partial | Partial | PowerPoint best |
| Alpha effects | ✓ | ✓ | ✓ | Full support |
| Compression states | ✓ | ✓ | ✓ | Full support |
Notes
Element Characteristics
- Image reference: Points to embedded or external image
- Effect container: Holds multiple image effect filters
- Chainable: Multiple effects applied sequentially
- Relationship-based: Embedded images via r:embed ID
- Compression-aware: Supports different quality levels
Best Practices
- Use embedded images for standalone documents/templates
- Use linked images for frequently-updated web content
- Apply grayscale for printing (reduces file size)
- Use compression states: print=300 DPI, screen=96 DPI
- Chain effects carefully (order matters)
- Test effect rendering across Office versions
- Document effect sequences in templates
- Validate linked URLs remain accessible
Performance
- Embedded: Larger file size, portable
- Linked: Smaller file, requires external access
- Compressed: Significantly reduces file size (print/screen)
- Effects: Processing overhead minimal on modern systems
- Caching: Office caches effect rendering
File Size Optimization
- Use compression: print/screen reduces file 10-50%
- Crop images before embedding
- Remove unnecessary effects
- Convert large bitmaps to vector where possible
- Consider image dimensions vs display size
Compatibility Notes
- Older Office versions may not render all effects
- PDF export applies all effects
- Web display effects depend on target platform
- Some effects (duotone) most reliable in PowerPoint