Как я получаю Значок из изображения png?

Осторожно! В Java использование InetAddress и связанных с ним классов (Inet4Address, Inet6Address, URL) может включать сетевой трафик! Например. Разрешение DNS (URL.equals, InetAddress из строки!). Этот вызов может занять много времени и блокируется!

Для IPv6 у меня есть что-то вроде этого. Это, конечно, не обрабатывает очень тонкие детали IPv6, так как индексы зоны разрешены только на некоторых классах адресов IPv6. И это регулярное выражение не записывается для группового захвата, это только «совпадение» типа регулярного выражения.

S - сегмент IPv6 = [0-9a-f]{1,4}

I - IPv4 = (?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9]{1,2})\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9]{1,2})

Схема (первая часть соответствует адресам IPv6 с суффиксом IPv4, вторая часть соответствует адресам IPv6, последний patrt для индекса зоны):

(
(
::(S:){0,5}|
S::(S:){0,4}|
(S:){2}:(S:){0,3}|
(S:){3}:(S:){0,2}|
(S:){4}:(S:)?|
(S:){5}:|
(S:){6}
)
I

|

:(:|(:S){1,7})|
S:(:|(:S){1,6})|
(S:){2}(:|(:S){1,5})|
(S:){3}(:|(:S){1,4})|
(S:){4}(:|(:S){1,3})|
(S:){5}(:|(:S){1,2})|
(S:){6}(:|(:S))|
(S:){7}:|
(S:){7}S
)

(?:%[0-9a-z]+)?

И здесь может появляться регулярное выражение (нечувствительность к регистру, окружающая то, что когда-либо понадобилось, например, начало / конец строки и т. д.):

(?:
(?:
::(?:[0-9a-f]{1,4}:){0,5}|
[0-9a-f]{1,4}::(?:[0-9a-f]{1,4}:){0,4}|
(?:[0-9a-f]{1,4}:){2}:(?:[0-9a-f]{1,4}:){0,3}|
(?:[0-9a-f]{1,4}:){3}:(?:[0-9a-f]{1,4}:){0,2}|
(?:[0-9a-f]{1,4}:){4}:(?:[0-9a-f]{1,4}:)?|
(?:[0-9a-f]{1,4}:){5}:|
(?:[0-9a-f]{1,4}:){6}
)
(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9]{1,2})\.){3}
(?:25[0-5]|2[0-4][0-9]|[01]?[0-9]{1,2})|

:(?::|(?::[0-9a-f]{1,4}){1,7})|
[0-9a-f]{1,4}:(?::|(?::[0-9a-f]{1,4}){1,6})|
(?:[0-9a-f]{1,4}:){2}(?::|(?::[0-9a-f]{1,4}){1,5})|
(?:[0-9a-f]{1,4}:){3}(?::|(?::[0-9a-f]{1,4}){1,4})|
(?:[0-9a-f]{1,4}:){4}(?::|(?::[0-9a-f]{1,4}){1,3})|
(?:[0-9a-f]{1,4}:){5}(?::|(?::[0-9a-f]{1,4}){1,2})|
(?:[0-9a-f]{1,4}:){6}(?::|(?::[0-9a-f]{1,4}))|
(?:[0-9a-f]{1,4}:){7}:|
(?:[0-9a-f]{1,4}:){7}[0-9a-f]{1,4}
)

(?:%[0-9a-z]+)?
21
задан Morten Christiansen 21 December 2008 в 20:51
поделиться

6 ответов

Я думаю, что можно попробовать что-то вроде этого, прежде чем преобразуют изображение в .ico:

    var bitmap = new Bitmap("Untitled.png"); // or get it from resource
    var iconHandle = bitmap.GetHicon();
    var icon = System.Drawing.Icon.FromHandle(iconHandle);

, Где icon будет содержать значок, в котором Вы нуждаетесь.

19
ответ дан 29 November 2019 в 20:55
поделиться

Существует также веб-сайт ( http://www.convertico.com/ ), который преобразовывает PNGs в ICOs.

9
ответ дан 29 November 2019 в 20:55
поделиться

Значки являются комбинацией 3 или 4 размеров изображения:

48 Г — 48, 32 Г — 32, 24 Г — 24 (дополнительно), и 16 Г — 16 пикселей.

И могут/должны, также содержат три различной глубины цвета:

  • 24-разрядный с 8-разрядной альфой (32-разрядной)
  • 8-разрядный (256 цветов) с 1-разрядной прозрачностью
  • 4-разрядный (16 цветов) с 1-разрядной прозрачностью

, Таким образом, .png поток памяти не собирается вписываться в конструктора значка. На самом деле при чтении примечаний по другому перегрузки конструктора Вы будете видеть все измерения Ширины и "Размера" или Высоты для нахождения корректного значка размера в файле.

[еще 119] информация о ручном создании значков может быть найдена под" Создание Значки Windows XP "

3
ответ дан 29 November 2019 в 20:55
поделиться

Можно установить ImageSource из значка окна к изображению png, и это работает, удивительно. Я не проверил это для значков панели задач все же.

1
ответ дан 29 November 2019 в 20:55
поделиться

Существует проект.NET, названный IconLib.

public void Convert(string pngPath, string icoPath)
{
    MultiIcon mIcon = new MultiIcon();
    SingleIcon sIcon = mIcon.Add("Icon1");
    sIcon.CreateFrom(pngPath, IconOutputFormat.FromWin95);
    mIcon.SelectedIndex = 0;
    mIcon.Save(icoPath, MultiIconFormat.ICO);
}
3
ответ дан 29 November 2019 в 20:55
поделиться

Вы могли попробовать маленькое приложение командной строки, названное png2ico. Я использую его для создания значков Windows из pngs.

0
ответ дан 29 November 2019 в 20:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: