Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Power BI is turning 10! Let’s celebrate together with dataviz contests, interactive sessions, and giveaways. Register now.

Reply
Kimber
Helper III
Helper III

Please confirm my understanding of dynamic images

All the research I've done indicates that PowerBI has no native way to display dynamic images. The only way to accomplish it is to use a 3rd party visual. The 2 main ones are Image by Cloudscope and SimpleImage. SimpleImage is free but it can only accept a column containing the base64 image, not a calculated measure. If I want the displayed image to vary based on a calculation, I have to use Image by Cloudscope, which requires a license. Is my understanding correct?

 

When it comes to licenses for 3rd party visuals, how does the pricing work? It asks how many people in my company, and then says the price per person. Does that assume that every person in my company will be CREATING reports using that visual? Or is it based on how many people in my company will LOOK at the visual that I published?

1 ACCEPTED SOLUTION

Sure 🙂

To make things clearer, I created a separate measure Flag SVG URL that returns a flag icon (similar to the built-in one) with a colour that depends on the selected Status.

 

I used an arbitrary nonblank measure Dummy = 1 as the card's Data field.

 

The measure returning the SVG URL doesn't need to have Data category = Image URL for the purpose of the Card (new) visual's image, but it's probably good practice to set it anyway for other purposes.

 

OwenAuger_0-1747182237594.pngOwenAuger_1-1747182275570.png

Flag SVG URL = 
VAR SelectedStatus = SELECTEDVALUE ( 'Status'[Status] )
VAR Result =
    IF (
        NOT ISBLANK ( SelectedStatus ),
        VAR FlagPolygonFill = SWITCH (
                SelectedStatus,
                "Early", "#84C28A",
                "On Time", "#F9D087",
                "Late", "#F78272",
                "#E0E0E0"  -- default
            )
        VAR FlagPathFill = SWITCH (
                SelectedStatus,
                "Early", "#449E44",
                "On Time", "F9B23E",
                "Late", "#F25021",
                "#E0E0E0"  -- default
            )
        VAR SVG =
            "data:image/svg+xml;utf8,"
                & "<svg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'>"
                & "<g xmlns='http://www.w3.org/2000/svg'>"
                & "<polygon fill='"
                & FlagPolygonFill
                & "' points='7.5,2.5 7.5,0.5 2.5,0.5 2.5,7.5 7.5,7.5 7.5,9.5 12.5,9.5 12.5,2.5 ' class='fwns' />"
                & "<path fill='"
                & FlagPathFill
                & "' d='M8,2V0H2.5v1H7v6H2.5v1H7v2h6V2H8z M12,9H8V3h4V9z' class='fwns' />"
                & "<rect x='2' fill='#444444' width='1' height='16' class='fwns' /></g>"
                & "</svg>"
        RETURN
            SVG
    )
RETURN
    Result

 


Owen Auger
Did I answer your question? Mark my post as a solution!
Blog
LinkedIn

View solution in original post

5 REPLIES 5
v-bmanikante
Community Support
Community Support

Hi @Kimber ,

 

Thank you for reaching out to Microsoft Fabric Community forum.

@OwenAuger Thank you for your quick response.

 

@Kimber Alongside the solution provided by the super user, you may also consider trying the following.Yes, you are right. Power BI (by default) doesn’t support showing images that change based on slicers or filters, especially if those images are driven by a DAX measure. The built-in visuals only support image URLs or base64 strings from a column, and those don’t change dynamically based on user interaction.

 

As you mentioned:

SimpleImage (Free): Works with base64 image columns and doesn't support DAX measures, so you can't make images change with slicers. This is Best for static image scenarios, like showing product pictures in a list.

 

Image by Cloudscope (Paid): Supports DAX measures which means the image can change based on filters or slicer. This is visual is more interactive and flexible and will be great for scenarios where you need images to respond dynamically.

 

Licensing will be,

Most paid visuals (like Cloudscope) charge per user, this usually means anyone who views the report, not just the person who developed the report. So if 1 person builds the report and 50 people view it, you might need 50 licenses, this is because visuals load on the viewer’s machine, which counts as usage

 

vbmanikante_0-1747130022974.png

 

If this post helps, then please consider Accepting as solution to help the other members find it more quickly, don't forget to give a "Kudos vbmanikante_1-1747130222905.png" – I’d truly appreciate it!

 

Regards,

B Manikanteswara Reddy

OwenAuger
Super User
Super User

Hi @Kimber 

You can display standalone dynamic images based on a measure with the Card (new) visual. (Caveat: it's still in preview)

Here's a small example with Callout Values switched off and Image set to the Image URL measure.

I included some Web URLs and an SVG data URL that depends on a slicer selection.

dynamic-image.gif

 

It is also possible to use the HTML Content or HTML Content (lite) custom visuals to display images as well (both a free & certified).

 

It is also possible to display images within other native visuals such as Matrix and Table visuals.


Owen Auger
Did I answer your question? Mark my post as a solution!
Blog
LinkedIn

Thank you! Could you please add an svg encoded icon to the mix? I want to check my formatting against yours. My card only shows the text value of the image, not the image itself, even though I have changed the data category to Image Url.

Sure 🙂

To make things clearer, I created a separate measure Flag SVG URL that returns a flag icon (similar to the built-in one) with a colour that depends on the selected Status.

 

I used an arbitrary nonblank measure Dummy = 1 as the card's Data field.

 

The measure returning the SVG URL doesn't need to have Data category = Image URL for the purpose of the Card (new) visual's image, but it's probably good practice to set it anyway for other purposes.

 

OwenAuger_0-1747182237594.pngOwenAuger_1-1747182275570.png

Flag SVG URL = 
VAR SelectedStatus = SELECTEDVALUE ( 'Status'[Status] )
VAR Result =
    IF (
        NOT ISBLANK ( SelectedStatus ),
        VAR FlagPolygonFill = SWITCH (
                SelectedStatus,
                "Early", "#84C28A",
                "On Time", "#F9D087",
                "Late", "#F78272",
                "#E0E0E0"  -- default
            )
        VAR FlagPathFill = SWITCH (
                SelectedStatus,
                "Early", "#449E44",
                "On Time", "F9B23E",
                "Late", "#F25021",
                "#E0E0E0"  -- default
            )
        VAR SVG =
            "data&colon;image/svg+xml;utf8,"
                & "<svg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'>"
                & "<g xmlns='http://www.w3.org/2000/svg'>"
                & "<polygon fill='"
                & FlagPolygonFill
                & "' points='7.5,2.5 7.5,0.5 2.5,0.5 2.5,7.5 7.5,7.5 7.5,9.5 12.5,9.5 12.5,2.5 ' class='fwns' />"
                & "<path fill='"
                & FlagPathFill
                & "' d='M8,2V0H2.5v1H7v6H2.5v1H7v2h6V2H8z M12,9H8V3h4V9z' class='fwns' />"
                & "<rect x='2' fill='#444444' width='1' height='16' class='fwns' /></g>"
                & "</svg>"
        RETURN
            SVG
    )
RETURN
    Result

 


Owen Auger
Did I answer your question? Mark my post as a solution!
Blog
LinkedIn

That was SO helpful! Thank you!!!

Helpful resources

Announcements
Join our Fabric User Panel

Join our Fabric User Panel

This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.

June 2025 Power BI Update Carousel

Power BI Monthly Update - June 2025

Check out the June 2025 Power BI update to learn about new features.

June 2025 community update carousel

Fabric Community Update - June 2025

Find out what's new and trending in the Fabric community.