Итак, что вы получаете от IShellItemImageFactory.GetImage
- это составное изображение, которое содержит исходное изображение на белом фоне? Я подозреваю, что белый фон есть, если изображение не имеет такое же соотношение сторон, как размер эскиза. Например, если вы запросите миниатюру размером 96x96 для изображения 640x480, то сверху и снизу будет некоторое свободное пространство.
Если это так, у вас есть проблема. Вы не можете различить белые пиксели, которые содержатся в изображении, и белые пиксели, которые добавляются с помощью GetImage
.
Есть несколько вещей, которые вы могли бы сделать. Вы можете загрузить изображение и изменить его размер самостоятельно. Это, наверное, самый простой. Тогда вы захотите сохранить свой собственный кэш миниатюр.
Или вы можете просмотреть изображение, возвращаемое GetImage
, чтобы найти пустое пространство по бокам. По сути, если каждый пиксель в строке (или столбце) белый, то сделайте эту строку (или столбец) прозрачной. Это немного сложнее (например, логотип NBA ). Но это по сути то, что вы хотели бы сделать.