Вообще data:url полезен для тех, кто хочет отдавать HTML-страницы в виде одного файла. Им в помощь я написал одну функцию на PHP, позволяющую преобразовывать изображения.
Можно ли таким способом уменьшить размер изображения? Увы, нет, изображения, представленные в base64 кодировке как правило на 10-30% больше их бинарного аналога.
Никаких посторонних плагинов или сервисов — чистый PHP.
Были кстати некоторые проблемы с определением MIME-типа. Раньше для этих целей использовалась функция mime_content_type(), вот только теперь она не пашет, к счастью, выход есть всегда, итак:
function insert_base64_encoded_image($img, $echo = false){ $imageSize = getimagesize($img); $imageData = base64_encode(file_get_contents($img)); $imageHTML = "<img src='data:{$imageSize['mime']};base64,{$imageData}' {$imageSize[3]} />"; if($echo == true){ echo $imageHTML; } else { return $imageHTML; } }
function insert_base64_encoded_image_src($img, $echo = false){ $imageSize = getimagesize($img); $imageData = base64_encode(file_get_contents($img)); $imageSrc = "data:{$imageSize['mime']};base64,{$imageData}"; if($echo == true){ echo $imageSrc; } else { return $imageSrc; } }
Функцию как обычно вставляем в functions.php (это для WordPress), а там где нужно вывести изображение, пишем:
insert_base64_encoded_image('picture.jpg', true);
или вот так:
echo insert_base64_encoded_image('picture.jpg');
или даже вот так, но здесь уже не указаны размеры изображения в теге:
<img src="<?php insert_base64_encoded_image_src('picture.jpg', true) ?>" />
Как видите, сгодится любой формат изображений, будь то JPG, PNG, GIF и т.д.
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.
Клёвая функция. спс!
спасибо) просто, доходчиво) пару дней искал истину в простоте)
Отлично. Огромное спасибо. Так тырить прямые ссылки на изображения уже не будут :)