July 6, 2020

Картинки в чате Skype

Оказывается, в чате скайпа работают некоторые HTML-теги, в том числе и <font color="">
Благодаря этому возможно создавать несложные картинки в тексте сообщений.

Список поддерживаемых в скайпе тегов www.wikireality.ru/wiki/HTML_в_Скайпе
Для того чтобы оправить HTML-код в чате нужно зажать CTRL+SHIFT и кликнуть на кнопку отправки сообщения.

Код картинки pastebin.com/raw.php?i=z4EspzjC

Ниже показан пример генерации HTML-кода из изображения на PHP.

$imgw = imagesx($img);
$imgh = imagesy($img);
$ratio = $imgw/$imgh;
$newh = floor(sqrt(800 / $ratio));
$neww = floor($ratio * $newh);

$newimg = imagecreatetruecolor($neww, $newh);
imagecopyresampled($newimg, $img, 0, 0, 0, 0, $neww, $newh, $imgw, $imgh);
imagedestroy($img);
$out = '<font size="1"><u>';
for($j = 0; $j < $newh; $j++) {
	for ($i = 0; $i < $neww; $i++) {
		$color = imagecolorat($newimg, $i, $j);
		$out .= '<font color="#'.strtoupper(dechex($color)).'">███</font>';
	}
	$out .= "\n";
}
$out .= '</u></font>';
echo $out;

Код достаточно примитивный, потому как обрабатывается каждый пиксель, даже если подряд идут несколько пикселей одного цвета. Если оптимизировать код, таким образом, чтобы генерировать более компактный HTML, возможно создавать картинки более высокого разрешения. Всё упирается в максимальный размер сообщения в skype — 29,999 символов (символ █ считается за три обычных).

Внимание, при большом количестве таких картинок skype начинает сильно тормозить, спасает только очистка истории. Поэтому лучше удалять сообщение с картинкой.

Работает только в Windows версии.

Попробовать можно тут img4skype.com

P.S. Будем рады если кто-то сможет оптимизировать код для генерации картинок бОльшего разрешения.

UPD: sergey_dobrodey Написал версию на .NET с возможностью создавать картинки 40х40 пикселей но с инвертированием цветов github.com/sergeydobrodey/SkypeImage

UPD: aruz Написал реализацию на .NET генерирующую оптимизированный HTML-код с возможностью регулировать конечный размер и возможностью уменьшение количества цветов github.com/aruz/img4skype
Это позволило создавать огромные картинки (первая сгенерирована моим алгоритмом)

UPD: В новой версии скайпа 5.8.0.154 больше нет возможности отправлять HTML. Но при этом код отправленный с версии младше, отображается в новой версии нормально. Для отправки кода нужна версия ≤5.7


Статья на хабре https://habr.com/ru/post/136395/