Image url


Картинки на сайте имеют две функции: во-первых, они улучшают внешний вид ресурса, во-вторых, помогают воспринимать информацию лучше.
Я не буду здесь делать большое вступление, а приступлю сразу к делу.
Итак, в этой статье я расскажу о всех возможных способах работы с изображениями: вставка фонового изображения, выравнивание изображения, прозрачность, тень от картинки и т.д.

Работа с картинками (изображениями) в CSS

Фоновая картинка.


background | background-image

Если вы хотите добавить фоновую картинку на веб-страницу, воспользуйтесь стилевым свойством background, который задается к селектору body.  Задайте путь к изображению внутри значения url.

<style> body { background: url(путь к файлу); } </style>

или

<style> body { background-image: url(путь к файлу); } </style>

Как выбрать графический путь? Графический путь будет зависеть от того, где он располагается.
Например, если HTML-файл и фоновый рисунок с именем bg.gif хранятся в одной папке, то достаточно задать url(bg.gif), если фоновый рисунок хранится в папке images, тогда путь будет вот таким url(images/bg.gif).

Совет: учтите, фоновое изображение загружается не сразу, поэтому рекомендую добавлять к фоновому изображению цвет фона, так как цвет загружается моментально. Задайте цвет фону близкий к цвету фонового рисунка.

Пример:

    <html>   <head>   <title>Фон в CSS</title>   <style>   body {   background: #000000 url(images/bg.gif); /* Цвет фона и путь к графическому файлу */   }   </style>   </head>   <body>   <p>Ваш текст</p>   </body>  </html>    

или


  <html>   <head>   <title>Фон в CSS</title>   <style>   body  {  background-image: url(images/bg.gif); /* Путь к графическому файлу */  background-color:#000000; /* Цвет фона */  }   </style>   </head>   <body>   <p>Ваш текст</p>   </body>  </html>  

Повтор фоновой картинки.

background-repeat

Бывают моменты, когда нам необходимо управлять повторами фонового изображения. Например, нам выгодно, чтобы повтор фонового изображения был только по горизонтали или только по вертикали,  а бывает момент, что повтор фонового изображения нам вообще не нужен. Итак, как нам выкрутиться в этой ситуации? Воспользуйтесь стилевым свойством background-repeat.

background-repeat: repeat-y | repeat-x | no-repeat;

Значения:

repeat-y — повтор фонового изображения по оси — у (вертикаль);
repeat-x — повтор фонового изображения по оси — х ( горизонталь);
no-repeat; — запретить повтор фонового изображения (изображение будет как оно есть);

Если не задать стилевое свойство background-repeat, тогда фоновое изображение веб-страницы будет залито полностью фоновой картинкой.


Пример:

  <html>   <head>   <title>Фон в CSS</title>   <style>   body  {  background-image: url(images/bg.gif); /* Путь к графическому файлу */  background-color:#000000; /* Цвет фона */  background-repeat: repeat-x; /* фон будет повторятся по оси-х (горизонтали) */  }   </style>   </head>   <body>   <p>Ваш текст</p>   </body>  </html>  

или

  <html>   <head>   <title>Фон в CSS</title>   <style>   body {   background: #000000 url(images/bg.gif) repeat-x; /* Цвет фона, путь к графическому файлу и повтор фона по оси-х (горизонтали)*/   }   </style>   </head>   <body>   <p>Ваш текст</p>   </body>  </html>  

Как добавить две фоновые картинки на веб-страницу.

background

Бываю такие моменты, когда нам необходимо создать два фона для сайта. Например, один фон повторяется по вертикали или по горизонтали, а второй фон выводится без повторения.
Добавим две фоновые картинки старым добрым способом. По крайне мере я знаю точно, все браузеры отображают этот метод.
Зададим фоновое изображение к элементам — HTML и BODY.

  <style type="text/css">  HTML { background: url(картинка 1); /* Путь к графическому файлу с первым фоном */ }  BODY { background: url(картинка 2) no-repeat top center; /* Путь к графическому файлу со вторым фоном */ }  </style>  

Пример:


  <html>  <head>  <title>Фон в CSS</title>  <style>  HTML  {  background: url(картинка-1) no-repeat bottom; /* Путь к графическому файлу с первым фоном, запрет на повтор картинки, прижать к низу части экрана */  }  BODY  {  background: url(картинка-2) no-repeat top center; /* Путь к графическому файлу со вторым фоном, запрет на повтор картинки, прижать к верху по центру */  }  </style>  </head>  <body>  <p>Контент сайта</p>  </body>  </html>  

Результат:

Как добавить две фоновые картинки на веб-страницу.

Картинка по центру.

Существуют несколько методов установить картинку по центру.

Примеры:

метод 1:

  <html>  <head>  <style>  BODY  {  background: url(картинка.gif) no-repeat center; /* Путь к графическому файлу, запрет на повтор картинки и разместить по центру */  }  </style>  </head>  <body>  <p>Контент сайта</p>  </body>  </html>  

метод 2:


  <html>  <head>  <style>  .imgCenter {text-align:center;}  </style>  </head>  <body>  <p>Текст параграфа.</p>  <div class="imgCenter">  <img src="картинка.gif" border="0" width="300" height="300" alt="" />  </div>  <p>Далее по тексту параграфа.</p>  </body>  </html>  

метод 3:

  <html>  <head>  <style>  .center {display:block; margin:0 auto;}  </style>  </head>  <body>  <p>Текст параграфа.</p>  <p>Текст параграфа.  <img class="center" src="картинка.gif" border="0" width="300" height="300" alt="" />  Далее по тексту параграфа.</p>  </body>  </html>  

Как в css изменить размер картинки.

background-size

Не зависимо от оригинала картинки, размер можно менять от меньшего до большего. В CSS для изменения размера картинки поможет свойство background-size.
В свойстве background-size могут применяться абсолютные единицы измерения, такие как px, em, cm и др..

background-size: ширина высота;

По умолчанию ширина и высота установлена как auto, что оставляет исходные размеры изображения.


Например, вы загрузили на сайт картинку размерами 200×200 px, но вам по каким-то причинам нужно ее увеличить до размера 500×200 px . Вот так будут выглядеть параметры background-siz.

background-size: 500px 200px;

Можно также указать только одно значение, и это будет считаться шириной. Тогда высота будет как auto и сохранятся пропорции картинки. Посмотрите пример снизу.

можно так:

background-size: 200px;

а можно вот так:

background-size: 200px auto;

Пример:

  <html>  <head>  <style>  body  {   background:url(картинка.jpg);   background-size:500px 200px;   background-repeat:no-repeat;  }  </style>  </head>  <body>  <p>текст сайта</p>  </body>  </html>  

Обтекание (выравнивание) картинки текстом.

float

Как сделать в CSS так, чтобы на странице изображение обтекало текстом? Выравнивание картинки в CSS аналог HTML-выравнивания картинки <IMG align=”right” …>, вот только в CSS по какой стороне будет выравнивание элементов определяет float.

float: left | right | none;


 Значение:

left — выровнять картинку по левому краю, текст обтекает его по правой стороне.

right — выровнять картинку по правому краю, текст обтекает по левой стороне.

none — выравнивание и обтекание не задается (значение по умолчанию).

Пример:

  <html>   <head>   <title>Обтекание</title>   <style>   .leftimg {   float:left; /* Выравнивание по левому краю */   margin: 5px 5px 5px 0; /* Отступы вокруг картинки */   }   .rightimg {   float: right; /* Выравнивание по правому краю */   margin: 5px 0 5px 5px; /* Отступы вокруг картинки */   }   </style>   </head>   <body>   <h2>Основы CSS</h2>   <p><img src="images/1.jpg" class="leftimg">   Приветствую всех читателей и случайных посетителей моего блога.   Сегодня я бы хотел вам рассказать о незаменимом инструменте веб-дизайнера - CSS.   CSS (Cascading Style Sheets) – это каскадные таблицы стилей, которые хранят в   себе правила для группы или одиночного элемента. CSS используют для изменения  внешнего вида дизайна сайта (цвет, размер текста, фон и др.).</p>   <h2>Основы CSS</h2>   <p><img src="images/2.jpg" class="rightimg">   Давайте перейдем к основам CSS.CSS файл имеет расширение *.css.   Часто веб-мастера присваивают CSS файлу имя style (style.css).   CSS файл тесно связан с HTML. Другими словами, это можно объяснить   так: CSS без HTML работать не будет.   Предлагаю для общего понимания рассмотреть пример, как можно объединить   HTML с CSS файлом.</p>   </body>  </html>  

Здесь я указал отступы текста от картинки


margin: 5px 0 5px 5px;

Результат:

Обтекание (выравнивание) картинки текстом.

Тень картинки.

box-shadow

Небольшая тень под картинкой придает также странице эффект трехмерности, объёма и глубины. Для добавления тени используется свойство box-shadow.

Тень картинки

1. —  inset —  тень внутри элемента, без inset тень будет наружу;
2. — сдвиг тени по горизонтали (6px — вправо, -6px — влево);
3. — сдвиг по вертикали (6px — вниз, -6px — вверх);
4. — размытие тени (0 — четкая тень);
5. — растяжение тени (3px — растяжение, -3px — сжатие);
6. — цвет тени

box-shadow: 0 0 5px; — тень вокруг элемента


тень вокруг элемента

box-shadow: inset 0 0 5px; — тень внутри

тень внутри

Пример:

  <html>   <head>   <title>Изображение</title>   <style>   img {   box-shadow: -19px 0 22px -19px #000, 19px 0 22px -19px #000;   }   </style>   </head>   <body>   <p><img src="картинка.jpg" alt=""></p>   </body>  </html>  

Результат:

Тень картинки

Прозрачность картинки.

Начну сразу с примера.

Пример:

  <html>  <head>  </head>  <body>  <p>Обычное изображение:</p>  <img src="картинка.png" width="300" height="200" />  <p>изображение с прозрачностью:</p>  <img src="картинка.png" width="300" height="200"  style="opacity:0.4;filter:alpha(opacity=40)" />  </body>  </html>  

Обратите внимание в коде на opacity:0.4. Поиграйтесь со значением этого свойства и вы увидите на сколько увеличивается или уменьшается прозрачность картинки.

Результат:


Прозрачность картинки

С наилучшими пожеланиями Webmasterok2009

Понравился пост? Помоги другим узнать об этой статье, кликни на кнопку социальных сетей ↓↓↓

bloggood.ru

Let's dissect this Sanity image-url:

https://cdn.sanity.io/images/zp7mbokg/production/G3i4emG6B8JnTmGoN0UjgAp8-300x450.jpg

https://cdn.sanity.io/images/ is the common base for all Sanity image urls. It is followed by the project id (zp7mbokg in this instance), the dataset (production) and then the asset id which is comprised of a name (G3i4emG6B8JnTmGoN0UjgAp8) a dash then the width and height of the original image (300x450) and the file format of the original image (jpg).

The image urls can always be found in the asset-document referred to by an image, but you don't actually have to fetch this document as the asset document id contains all the information (and represents a stable, documented interface you can trust).

The asset id corresponding the the url above looks like this: "image-G3i4emG6B8JnTmGoN0UjgAp8-300x450-jpg". As you can see it provides the name, dimensions and format. Given the project id and dataset name you have every piece you need to assemble the url without fetching the asset document:

https://cdn.sanity.io/images/<project id>/<dataset name>/<asset name>-<original width>x<original height>.<original file format>

So this represents the base url. If you fetch this you will be served the original asset. This wastes a lot of bandwidth as content managers should upload full resolution assets. The Sanity image pipeline therefore scales, crops and processes images on the fly for you based on the url-parameters your provide. E.g. by appending ?h=200 to the base url you instruct Sanity to scale the image to be 200 pixels tall:

https://cdn.sanity.io/images/zp7mbokg/production/G3i4emG6B8JnTmGoN0UjgAp8-300x450.jpg?h=200

You can specify any number of parameters. This will extract a rectangle from the image, scale it to 200 pixels tall and blur it:

https://cdn.sanity.io/images/zp7mbokg/production/G3i4emG6B8JnTmGoN0UjgAp8-300x450.jpg?rect=70,20,120,150&h=200&blur=10

Even though the Sanity image backend is fast, you get a tremendous performance boost if your frontend limits the number of sizes and crops you ask for. Sanity will cache the result in the global CDN, and if we see the same url again we serve the exact same data directly from the edge cache closest the the user.

Scale the image to be that wide.

Scale the image to be that tall.

Specifies size limits giving the backend some freedom in picking a size according to the source image aspect ratio.

Affects how the image is handled when you specify target dimensions.

  • clip: The image is resized to fit within the bounds you specified without cropping or distorting the image.
  • crop: Crops the image to fill the size you specified when you specify both w and h
  • fill: Like clip, but the any free area not covered by your image is filled with the color specified in the bg parameter.
  • fillmax: Places the image within box you specify, never scaling the image up. If there is excess room in the image, it is filled with the color specified in the bg parameter.
  • max: Fit the image within the box you specify, but never scaling the image up.
  • scale: Scales the image to fit the constraining dimensions exactly. The resulting image will fill the dimensions, and will not maintain the aspect ratio of the input image.
  • min: Resizes and crops the image to match the aspect ratio of the requested width and height. Will not exceed the original width and height of the image.

Use with fit=crop to specify how cropping is performed:

  • top, bottom, left and right: The crop starts from the edge specified. crop=top,left will crop the image starting in the top left corner.
  • center: Will crop around the center of the image
  • focalpoint: Will crop around the focal point specified using the fp-x and fp-y parameters.
  • entropy: Attempts to preserve the "most important" part of the image by selecting the crop that preserves the most complex part of the image.

Specify a center point to focus on when cropping the image. Values from 0.0 to 1.0 in fractions of the image dimensions. (See crop)

Crop the image according to the provided coordinates (in pixel units of the source image).

Specifies the file format of the image.

Specify the compression quality (where applicable).

Configures the headers so that opening this link causes the browser to download the image rather than showing it. The browser will suggest to use the file name you provided.

Blur, sharpen or invert the image.

Rotate the image in 90 degree increments.

Flip image horizontally, vertically or both.

www.sanity.io

Installation

Follow this few easy steps to hook the URL based image manipulation directly into your Laravel application. Once enabled the package generates a dynamic route, which forms the URL mentioned above and uses the caching system specified by your Laravel configuration.

1. Install packages

To use URL based image manipulation make sure you have installed the latest versions of both intervention/image and intervention/imagecache and of course a Laravel application. Refer to the installation guide of intervention/image and intervention/imagecache, if you need help on this. After installation follow a few easy steps to integrate Intervention Image into Laravel.

2. Publish package configuration

If everything is installed and set import the configuration file of the caching package, by running one of the following artisan commands:

Publish configuration in Laravel 5

$ php artisan vendor:publish

Publish configuration in Laravel 4

$ php artisan config:publish intervention/imagecache

You will find the configuration file in your app directory and you may edit it to your needs:

imagecache.php

3. Name the Route

By default URL based image manipulation is disabled. To enable it, you just need to define a name for the route in the configuration file mentioned above. This handle will define the first part of the URI. In this example we name the route imagecache.

‘route’ => ‘imagecache’

Essentialy that’s it. You may now list all registered routes by entering the following artisan command and check if the new route is listed correctly.

$ php artisan route:list

4. Define source directories

Now you have to let PHP know, where to search for images. You may define as many directories as you like. For example define all the upload directories of your application. The application will search the directories for the filename submited in the route.

‘paths’ => array( ‘storage/uploads/images’, public_path(‘img’) )

It makes sense to save image files with a unique filename in these directories. Otherwise the package will return the image that is found first.

Note: For security reasons the route only accepts filenames consisting of the following characters a-z, A-Z, 0-9, — (minus), _ (underscore), / (slash) and . (dot).

5. Templates

The templates are defined as names of filter classes, where you can define any manipulation operation. The configuration file comes with three different basic callbacks.

  • small — 120×90 Pixel
  • medium — 240×180 Pixel
  • large — 480×360 Pixel

Feel free to adapt the configuration to your needs. Especially the templates are just basic examples and they are not limited to resizing. You can use every method of intervention/image available.

‘templates’ => array( ‘small’ => ‘InterventionImageTemplatesSmall’, ‘medium’ => ‘InterventionImageTemplatesMedium’, ‘large’ => ‘InterventionImageTemplatesLarge’ )

The key of the templates array in the configuration file will define the template name as the second part of the url. The value defines the name of the applied filter class.

Accessing the original image file

There are a the following built-in routes, you can use to bypass any template and access the original file directly.

  • original — Send HTTP response with original image file.
  • download — Send HTTP response and forces the browser to download the original image file, instead of displaying it.

Just use the name instead of the template name.

http://yourhost.com/{route-name}/original/{file-name}

Filter class example

Take a look at the following example of a template filter class to learn more about filter classes and define your own templates anywhere you like.

<?php  namespace YourAppFilters;  use InterventionImageImage; use InterventionImageFiltersFilterInterface;  class MyFilter implements FilterInterface {  public function applyFilter(Image $image)  {  return $image->fit(120, 90)->greyscale();  } } 

After the class is loaded you can add it to the templates array in your configuration file.

‘templates’ => array( ‘small’ => ‘InterventionImageTemplatesSmall’, ‘medium’ => ‘InterventionImageTemplatesMedium’, ‘large’ => ‘InterventionImageTemplatesLarge’, ‘foo’ => ‘YourAppFiltersMyFilter’ )

Custom image quality and format

By default all images requested via URL based image manipulation are generated in the same format as the original with default quality. You can specify custom output settings by passing encoded data in the template class.

public function applyFilter(Image $image) {  return $image->fit(120, 90)->encode('jpg', 20); } 

5. Image Cache Lifetime

Once the route is accessed the first time, the image will be searched, edited according to the template and stored in the cache. So the next time you access the URL, all the GD manipulation is bypassed and the file will come directly from the cache.

You can define a custom lifetime, to define the minutes until the next image is created.

‘lifetime’ => 43200

image.intervention.io

Как узнать адрес картинки и скопировать его

Скопировать адрес изображения можно несколькими способами:

  1. Навести курсор на фото, нажать на правую клавишу мышки, в появившемся контекстном меню будет предложено скопировать URL, щёлкнуть по необходимому пункту.
    Если навести на фото и нажать на правую клавишу мышки, то в Mozilla Firefox откроется контекстное меню с таким пунктами
    Рис.1 Если навести на фото и нажать на правую клавишу мышки, то в Mozilla Firefox откроется контекстное меню с таким пунктами
  2. Навести курсор на фото, нажать на правую клавишу мышки, в появившемся контекстном меню будет предложено изучить характеристики фотографии, щёлкнуть по необходимому пункту (на Рис.1 cм. пункт «Информация об изображении»; в Internet Explorer см. пункт «Свойства»), в открывшемся окне выделить адрес рисунка,
    • нажать на правую клавишу мышки, в появившемся контекстном меню щёлкнуть по пункту «Копировать».
    • нажать комбинацию клавиш клавиатуры Ctrl+C.
    Информация об изображении в Mozilla Firefox
    Рис.2 Если в Mozilla Firefox навести на фото, нажать на правую клавишу мышки, в появившемся контекстном меню выбрать пункт «Информация об изображении», то откроется окно, где можно посмотреть список картинок, используемых на странице, их адрес, альтернативный текст (содержимое в атрибуте alt), фактический размер и используемый масштаб
  3. Навести курсор на фото, нажать на правую клавишу мышки, в появившемся контекстном меню будет предложено перейти на страницу картинки, щёлкнуть по необходимому пункту (на Рис.1 cм. пункт «Открыть изображение»). Откроется страница, содержимым которой будет лишь одно изображение. В полный рост, если ранее оно было уменьшено с помощью атрибутов height и width или с помощью CSS. Выделить адрес открывшейся страницы в адресной строке браузера,
    • нажать на правую клавишу мышки, в появившемся контекстном меню выбрать пункт «Копировать».
    • нажать комбинацию клавиш клавиатуры Ctrl+C.
    Так выглядит страница картинки, в данном случае смайлика
    Рис.3 Так выглядит страница смайлика.
    Её URL: http://photos1.blogger.com/x/blogger2/6533/16720282190093/320/140728/plain.gif
  4. На сенсорных устройствах (смартфон, планшет) долго без движения держать палец над фото, в появившемся контекстном меню будет предложено перейти на страницу картинки, щёлкнуть по необходимому пункту (он может называться «Просмотр картинки»). Откроется страница, содержимым которой будет лишь одно изображение. В полный рост, если ранее оно было уменьшено с помощью атрибутов height и width или с помощью с помощью CSS. Затем долго жать на адрес в адресной строке браузера. После того, как появятся ползунки и весь URL будет выделен (в случае необходимости, ползунки можно раздвинуть на необходимое расстояние), щёлкнуть в появившейся панели кнопку «Копировать».
  5. Навести курсор на фото, нажать на правую клавишу мышки, в появившемся контекстном меню будет предложено перейти на страницу фонового изображения, щёлкнуть по необходимому пункту. Откроется страница, содержимым которой будет лишь одно изображение. В полный рост, если ранее оно было уменьшено с помощью с помощью CSS. Выделить адрес открывшейся страницы в адресной строке браузера (см. Рис.3),
    • нажать на правую клавишу мышки, в появившемся контекстном меню выбрать пункт «Копировать».
    • нажать комбинацию клавиш клавиатуры Ctrl+C.

    Перейти на страницу фонового изображения в Mozilla Firefox

  6. Из исходного кода страницы сайта.

Как сохранить изображение

Навести курсор на фото, нажать на правую клавишу мышки, в появившемся контекстном меню будет предложено сохранить картинку, щёлкнуть по необходимому пункту (на Рис.1 cм. пункт «Сохранить изображение как…»), в открывшемся окне выбрать папку на компьютере, куда будет сохранён рисунок. Как сохранить изображение на компьютер

Если фотография является фоновой картинкой, то нужно предварительно перейти на страницу картинки (см. Рис.3).

Возможно будет интересно: «Как сохранить изображение экрана монитора (сделать скриншот)»

shpargalkablog.ru

Что такое URL и зачем он картинкам?

URL – это адрес размещения любого объекта в интернете. И если о ссылках на сайты знают все, то для большинства станет открытием существование URL картинки. Как узнать этот код – вопрос, аналогичный вопросу о том, где находится источник изображения.

Фото, картинка, документ – любой подобный файл обязательно имеет свое место на определенном сервере. Именно на него и указывает код URL. Если перевести термин дословно, то получится что-то вроде «универсального локатора ресурса». А если сказать обычным языком, то это указатель адреса источника.

Как узнать URL картинки в браузере?

url картинки как узнать

На это вопрос существует четкий ответ. Не важно, зачем вам понадобился URL картинки. Как узнать его, не выходя из браузера?

Выберите интересующее изображение и кликните по нему правой кнопкой мышки. В выпавшем меню прежде всего пользователя должен интересовать пункт «копировать ссылку» или «копировать URL». У каждого браузера список может иметь отличия, но эта функция всегда звучит примерно одинаково. Вы сразу поймете, какой пункт нужен, как только его увидите.

После клика адрес картинки добавляется в буфер обмена. Вы можете вставить его в адресную строку, сообщение приятелю или пост на форуме. Проверить правильность действий можно уже по формату ссылки. Так как речь идет об изображении, то в конце должно быть указано расширение jpg.

Как узнать URL картинки на компьютере?

Это также несложно выяснить. Вы уже поняли, что адрес изображения в интернете – это и есть URL картинки. Как узнать его, если фото находится на вашем компьютере, а не в Сети?

Чтобы у фото появилась ссылка на источник, её нужно на него загрузить. Для этих целей хорошо подходят социальные сети, файлообменники, Google. Диск. Процесс добавления для каждого из них будет происходить по своему алгоритму. Но как только изображение окажется в интернете, повторите действия из прошлого способа.

Пара кликов мышкой, и ссылка уже готова к использованию. Как видите, это действительно просто.

как узнать url картинки на компьютере

Реже, но все же может возникнуть вопрос о том, как узнать URL картинки на телефоне или планшете? На большинстве существующих моделей достаточно нажать пальцем на выбранное изображение и не убирать его несколько секунд. В ответ появляется контекстное меню. Оно отличается от того, что вы видели в браузере. Здесь нужно искать функцию, которая откроет картинку в новом окне.

Как только вы найдете этот пункт и нажмете на него, откроется страничка, на которой не будет ничего, кроме нужного фото. Адрес этой страницы – это и есть нужный вам URL.

fb.ru

Схема data:URL

Но есть и другой вариант. А что, если картинки не клеить между собой, а внедрять прямо на место их использования — непосредственно в HTML и CSS файлы? Конечно, сами файлы при этом несколько «распухнут» — увеличатся в размерах, но зато все загрузится за один запрос. Выигрыш на заголовках может быть весьма ощутимым! И, как ты увидишь ниже, не только на заголовках.

Технически, такая «вклейка» возможна. Базируется она на схеме data:URL. Эта схема позволяет внедрить на веб-страницу данные так, как если бы они были подключены с помощью вызова внешних файлов. Оговорюсь, внедрение возможно не в произвольном месте, а именно в URL (например, в атрибуте src, тега img).

Сразу предупрежу — метод не панацея. Имеет ряд существенных ограничений. Но, давай по порядку.

Как это выглядит?

Все очень просто. Имеем следующий синтаксис:

где:

  • MIME-тип — тип встраиваемых данных (мы будем встраивать рисунки, поэтому, скорее всего, будет что-то типа image/gif или image/png);
  • base64 — означает, что данные закодированы в base64 (если параметр не указан, считается, что данные закодированы в ASCII);
  • данные — собственно набор байт — закодированное изображение.

На практике получатся примерно такие (или во много раз более длинные) громоздкие, но вполне валидные конструкции:

А что с кроссбраузерностью?

Закономерный вопрос. В настоящее время подавляющее большинство браузеров поддерживают эту технологию. Ни с Firefox, ни с Opera, ни с Safari, ни с IE8+ никаких проблем быть не должно.

Для IE6-7 существует альтернативное решение вставки изображений в виде mhtml-включений. Так что можно сказать, что все популярные браузеры позволяют использовать внедрение изображений.

Как обычно, не откладывая в долгий ящик, демо-пример странички с data:URL для фоновых картинок (CSS) и для тега img (HTML).

Проверено в:

  • IE 6-8
  • Firefox 3
  • Opera 9.5-10
  • Safari 4
  • Chrome 8

Как получить код?

С кроссбраузерностью разобрались, пример посмотрели. Теперь самое время, что бы кто-нибудь сказал: «Стоп! Что ты там за символы понавставлял в примере?! Где ты их взял? У меня же просто картинка! Файлик…».

Не беспокойся. За нас уже поработали. Существуют готовые сервисы, которым можно «скормить» файл-картинку и получить соответствующий ей код.

Про размеры картинок

Так как картинка вставляется в URL, на размер кода накладываются некоторые ограничения. Вообще говоря, по спецификации, браузеры обязаны поддерживать URL не менее 1Kb. На самом деле ситуация гораздо лучше. В ходе эксперимента выяснилось, что блок кода картинки до 32Kb можно смело использовать во всех популярных браузерах (FF, Opera, Chorme, Safari, IE6+).

При размере больше 32Kb пасует IE8. Но, если для IE8 использовать не data: URL, а MHTML-включение (как для IE6-7), то можно использовать код до 64Kb.

Важная оговорка! Цифры, приведенные выше, относятся именно к размеру base64-кода картинки. Фактический размер изначального изображения должен быть примерно на треть меньше. Таким образом, имеем безопасное ограничение для размера встраиваемой картинки примерно 20Kb.

В чем сила, брат?

Итак, можно с помощью специального сервиса превращать картинки в строки кода и вставлять их в HTML/CSS. Но это же уйма дополнительной работы! Для чего это все?

Преимуществ метода достаточно много. Вот перечень показавшихся наиболее существенными:

  • все внедренные данные попадают на страницу в результате одного запроса — даже на простенькой странице так можно выиграть десятки килобайт на заголовках HTTP, то есть уменьшить нагрузку на сеть и не терять время на ожидание обмена информацией между сервером и клиентом при каждом запросе;
  • некоторые браузеры имеют ограничение по количеству параллельных подключений к серверу, встроенные данные освобождают подключения для загрузки другого контента;
  • меньше используется файлов — значит меньше файлов попадет в кеш, в некоторых ситуациях это может быть важно;
  • дополнительная функциональность — например, браузер может перекодировать в data:URL картинку, находящуюся в буфере, и вставить ее в HTML поле ввода;
  • шаблоны e-mail сообщений могут содержать картинки, например, подпись или фоновый рисунок, без необходимости использовать вложения.

Обратная сторона медальки

Недостатков тоже хватает:

  • трудоемкость при разработке и поддержке. Мы не просто пишем адрес картинки, а еще и тратим время, кодируя/декодируя ее;
  • утверждается, что закодированные в Base64 данные примерно на треть больше по размеру, чем исходный файл изображения. Этот негативный момент можно устранить, если использовать gzip сжатие — такие данные будут хорошо жаться;
  • для HTML теряется выгода от кеширования — внедренные картинки, являясь единым целым с HTML-страницей, перезагружаются каждый раз, когда перезагружается документ;
  • браузеры имеют ограничения по длине URL, что определяет максимальный размер данных. То есть метод неприменим для больших картинок;
  • данные включаются как простой поток, и многие среды обработки не могут поддерживать контейнеры (вроде multipart/alternative или message/rfc822), чтобы обеспечить большую гибкость, типа метаданных, сжатия данных или согласования контента по языку.

Где применять?

Перечень достоинств и недостатков весьма внушительный. Однозначно одобрить или забраковать данную технологию невозможно. Просто она имеет ограниченную область применения.

Очевидно, что выигрыш от использования data:URL для CSS существенно больше, чем для HTML (где теряем выгоды от кеша и получаем дополнительный геммор с IE6-7). Так же имеем очень существенную оговорку о максимальном размере закодированного файла (да еще для разных браузеров он разный).

Вывод напрашивается сам собой: встроенные, при помощи data:URL, изображения имеет смысл использовать в CSS, для небольших фоновых картинок — получим выигрыш в быстродействии.

Подходит для высоконагрузочных проектов, или проектов, где важна скорость загрузки.

О производительности

update 23.02.11 by Ksayri Применение data:URL способно существенно снизить (до 10 раз) производительность некоторых браузеров. В частности это касается Firefox (который тратит очень много ресурсов на обработку base64) и IE6-7 (которым приходится иметь дело с mhtml). Чем больше будет data:URL на странице, тем больше будет тормозить.

Поэтому сейчас оптимальным решением будет приметь сначала CSS спрайты, а затем преобразовывать минимальное количество спрайтов в data:URL.

xiper.net


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.