you would be better off creating a custom module in code and then defining your templates for that, when you write the custom module In your driver class when you create the shape if you pass in the part as in the example
below you can access all your fields from
all your content parts easily, even if you multiple content parts that contain Image fields or Html fields you can access all the data through the model easily.
Example Driver Class:
protected override DriverResult Display(PromoBoxPart part, string displayType, dynamic shapeHelper)
() => shapeHelper.Parts_PromoBox(ContentPart: part));
By doing this you can then access all the contentparts attached to the widget through the model:
You have a Custom Content Type that is made up of multiple ContentParts and one of your ContentParts has a field called Image which is a MediaPickerField (downloadable from the gallery) you can access the data in the model like