Yes, I recall you creating unique icons based on your feature attributes so this made sense. Definitely consider using an IconCache as this processing may not be cheap. I am currently doing something similar by an image's pixel grid based on feature attributes so I have to cache these manipulated images so that this operation is only done once. In my case though, images are single color with transparent background.
If you images are PNG, you can try this:
// BitMap is the PNG you have loaded in memory
public static PointStyle CreatePictureMarkerSymbol(Bitmap bitmap)
{
if (bitmap == null) return null;
var size = bitmap.Size;
int width = size.Width;
int height = size.Height;
System.Drawing.Color color;
for (int i = 0; i < width; i++)
{
for (int j = 0; j < height; j++)
{
color = bitmap.GetPixel(i, j);
if (color != System.Drawing.Color.Empty)
// Experiment with the transparency. here it it set to 100
bitmap.SetPixel(i, j, System.Drawing.Color.FromArgb(100, color.R, color.G, color.B));
}
}
var imageStream = new MemoryStream();
bitmap.Save(imageStream, System.Drawing.Imaging.ImageFormat.Png);
imageStream.Seek(0, SeekOrigin.Begin);
var geoImage = SymbolFactory.GetGeoImage(imageStream);
PointStyle style = new PointStyle(geoImage);
return style;
}