Область изобретения
Настоящее изобретение относится к технологиям обработки изображений, в частности к способу синтезирования динамических виртуальных картинок.
Предпосылки создания изобретения
Технология виртуальных картинок развивалась в сети Интернет в последние годы, и постепенно виртуальная веб-картинка стала модной среди постоянных пользователей Интернета, т.к. она может воплотить в себе индивидуальность пользователя и выразить его оригинальность; виртуальная картинка стала очень популярной в этой среде. В настоящее время большинство виртуальных картинок сохраняют в формате обмена графическими файлами (GIF), и каждая виртуальная картинка состоит из нескольких компонентов. Здесь компонент означает каждое из частичных изображений, входящее в состав виртуальной картинки и сохраненное в формате GIF, при этом каждый компонент - это однокадровое изображение формата GIF.
Формат GIF является базовым стандартным форматом хранения файлов изображения, при этом каждый файл GIF может содержать множество цветных изображений, где каждое цветное изображение называют «кадром»; другими словами, в каждом файле GIF может быть сохранено множество «кадров». Эти изображения GIF можно разделить на однокадровые изображения и на многокадровые изображения, и, вообще говоря, однокадровое изображение представляют как статическое изображение, в то время как многокадровое изображение отображается кадр за кадром для представления динамического эффекта или эффекта анимации, так же, как при проецировании диапозитивов. Однако каждый кадр отличается от одиночного элемента изображения тем, что данный отдельный кадр не может сформировать изображения, поэтому один кадр в изображении GIF должен быть ассоциирован с предыдущим кадром, чтобы быть представленным как изображение. Изображение GIF хранит в себе информацию об изображении, единицей которой является блок, и каждый файл GIF содержит блок, указывающий на графику/изображение, подблок и управляющий блок данных, отображающий графику/изображение, которые вместе называются потоком GIF-данных. Все управляющие блоки данных и блоки в потоке данных должны быть расположены между Заголовком и Концевой частью. В формате GIF применен алгоритм сжатия Лемпеля-Зива-Уэлча (LZW) для хранения данных изображения, также пользователям разрешено задавать атрибут прозрачности для фона изображения.
Характерная структура файла GIF представлена в таблице.
Файл GIF содержит три типа блоков: блок управления, блок воспроизведения графики и блок специального назначения. Из них блок управления содержит информацию для управления потоком данных или установки параметров аппаратных средств, причем элементы блока управления содержат: заголовок GIF, дескриптор логического экрана, расширение управления графикой и концевую часть GIF-файла. Блок воспроизведения графики содержит информацию и данные для отображения графики на дисплее, причем элементы графического дескриптора содержат: дескриптор изображения и расширение простого текста. Блок специального назначения содержит информацию, независимую от обработки изображения, при этом элементы блока специального назначения содержат: расширение комментария и расширение приложения. Здесь области влияния только дескриптора логического экрана и глобальной таблицы цветов в блоке управления расположены вне потока данных, в то время как все другие блоки управления управляют только блоками воспроизведения графики, которые следуют за ними. Другими словами, в таблице дескриптор логического экрана и глобальная таблица цветов действуют на весь файл, в то время как расширение приложения, расширение читаемого текста, расширение комментария и расширение управления графикой управляют только теми блоками воспроизведения графики, которые следуют за ними.
Дескриптор логического экрана из таблицы содержит параметры, определяющие область отображения картинки, включая такую информацию, как размер логического экрана, цвет фона, наличие глобальной таблицы цветов, и т.д.
Поскольку один GIF-файл может содержать множество цветных изображений и каждое цветное изображение может иметь таблицу цветов в соответствии с характеристиками этого изображения, то один GIF-файл может иметь несколько таблиц цветов. Однако в общем существует только два типа таблиц цветов: глобальная таблица цветов и локальная таблица цветов. Глобальная таблица цветов применима ко всем изображениям, не имеющим своей таблицы цветов, и к расширениям читаемого текста, в то время как локальная таблица цветов применима только к следующему за ней изображению. Глобальная таблица цветов может отсутствовать, если каждый из кадров изображения имеет локальную таблицу цветов.
Расширение приложения содержит релевантную информацию о программе приложения для формирования файла изображения, например: есть ли периодически воспроизводимая анимация, сколько раз она должна быть периодически проиграна и т.д. Данный блок может быть опущен, если файл изображения является статическим.
Расширение управления графикой содержит параметры для обработки блока воспроизведения графики, включая: отметку прозрачности, которая указывает на наличие прозрачности, цветовой индекс прозрачности, способ обработки, время задержки и т.д. При этом способ обработки используется для конкретизации процесса после того, как графика выведена на дисплей, например: а) процесс не конкретизирован; б) процесс не конкретизирован и графика остается на прежнем месте; в) цвет области, отображающей графику, должен быть восстановлен как цвет фона; г) отображается графика, которая отображалась до этого. Время задержки, единицей измерения которого является 1% секунды, используют для указания интервала ожидания между выведением графики и последующим процессом.
Дескриптор изображения используется для записи размера каждого кадра изображения и может содержать любое число изображений без жесткой последовательности хранения, при этом для идентификации дескриптора изображения использован однобайтовый разделитель изображений. Каждое изображение содержит дескриптор изображения, необязательную локальную таблицу цветов и данные изображения. Каждое изображение должно находиться внутри логического экрана, задаваемого дескриптором логического экрана.
Данные изображения содержат последовательности данных. Эти данные изображения записывают каждый пиксель, используя значение индекса таблицы цветов, и сжимают данные, используя алгоритм LZW.
В уровне техники для осуществления процесса синтеза виртуальных картинок обычно применяют пакет программ синтезирования, используемый, в общем случае, посредством сети Интернет как, например, библиотека Gif Draw (GD). Поскольку библиотека GD не может обработать многокадровый файл в формате GIF и может обработать только однокадровый GIF-файл, то существующая технология синтезирования виртуальных картинок позволяет синтезировать только статическую виртуальную картинку, что в общем случае называют синтезированием статических виртуальных картинок. Процедура осуществления синтезирования статической виртуальной картинки в уровне техники содержит следующие действия: определяют контекстуальные отношения между компонентами, а также задают подобные контекстуальные отношения со слоями; при выполнении синтезирования сначала синтезируют первый слой и фоновое изображение согласно последовательности номеров слоев; затем синтезируют второй слой и ранее синтезированное изображение, дальнейшее можно продолжить аналогично до тех пор, пока не будут синтезированы все слои. Допустим, например, что есть три компонента, помимо фона, а именно: брюки, куртка и лицо, при этом получается следующая виртуальная картинка: лицо находится перед курткой, часть воротника закрыта лицом, куртка находится перед брюками, причем куртка закрывает часть брюк; тогда заранее определенные номера слоев таковы: брюки 1, куртка 2 и лицо 3; если синтезирование завершено, то брюки вставлены в фон первыми, далее вставляют куртку, лицо вставляют последним; под процессом вставки здесь понимают синтезирование изображений путем использования существующих синтезирующих функций.
Хотя описанный выше способ синтезирования очень прост и легок в реализации, поскольку каждый компонент является одним кадром, а каждое временно синтезированное изображение - это также один кадр, однако конечное синтезированное изображение также является одним статическим кадром; другими словами, при использовании вышеуказанного способа можно получить только статическую виртуальную картинку. Даже если компоненты синтезирования - это многокадровые динамические GIF-файлы, только первый кадр может быть прочитан с целью синтезирования, следовательно, синтезированное виртуальное изображение является простым и "негибким", оно неспособно удовлетворить требования пользователя.
Сущность изобретения
Обеспечен способ синтезирования динамических виртуальных картинок с целью осуществить синтезирование динамических виртуальных картинок и, таким образом, предложить пользователю улучшенную услугу.
Для достижения вышеуказанных целей реализована следующая техническая схема настоящего изобретения.
Способ синтезирования динамических виртуальных картинок, содержащий следующие действия:
a) синтезирующая серверная сторона получает пользовательский запрос на синтезирование виртуальной картинки, отправленный пользователем, и, в соответствии с информацией пользовательского запроса, получает файлы изображений всех компонентов для синтезирования виртуальной картинки;
b) поочередно считывают соответствующие файлы изображений компонента в соответствии с номерами слоев каждого компонента и трансформируют полученные файлы изображений компонентов в заданный формат;
c) синтезируют компонент, отформатированный на шаге b), и предварительно считанный файл шаблона для формирования промежуточной картинки;
d) определяют, все ли компоненты синтезированы; если все компоненты синтезированы, то переходят к шагу е); в противном случае переходят к шагу f);
e) записывают синтезированную виртуальную картинку на основании всех синтезированных компонентов в файл изображения виртуальной картинки и заканчивают процедуру;
f) считывают один за другим соответствующие файлы изображения другого компонента согласно номеру слоя каждого компонента и преобразуют полученные файлы изображения компонента в заданный формат;
g) синтезируют компонент, отформатированный на шаге f), и предварительно синтезированную промежуточную картинку и возвращаются к шагу d).
Шаг g) включает следующие шаги:
определяют количество кадров синтезированного изображения промежуточной картинки и количество кадров форматированного компонента, определяют длительность фиксации отображения каждого кадра и соответствующую связь синтезирования между кадрами компонента и кадрами промежуточной картинки; исходя из определенной соответствующей связи синтезирования и в соответствии с длительностью фиксации отображения каждого кадра синтезируют кадры данного компонента и соответствующие кадры промежуточной картинки.
Перед записью кадр за кадром синтезированной виртуальной картинки на основании всех синтезированных компонентов в файл изображения виртуальной картинки на шаге d) способ дополнительно содержит следующие шаги:
сжимают кадр за кадром файл изображения, соответствующий синтезированной виртуальной картинке, от последнего кадра до второго кадра, при этом шаг записи синтезированной виртуальной картинки на основании всех синтезированных компонентов в файл изображения виртуальной картинки является следующим действием:
записывают каждый кадр, соответствующий сжатой и синтезированной виртуальной картинке, в файл изображения виртуальной картинки.
Процесс сжатия, в частности, содержит следующие действия:
последовательно точка за точкой сравнивают значение пикселей кадра со значением пикселей предыдущего кадра и, если два значения пикселей одинаковы, то изменяют цвет точки на прозрачный; если два значения пикселей различны, никаких действий не выполняют.
Способ дополнительно содержит следующий шаг:
предварительно получают информацию обо всех компонентах виртуальной картинки, которую необходимо синтезировать; при этом шаг а) содержит следующие действия:
пользователь отправляет запрос пользователя, несущий идентификационную информацию пользователя и информацию о компонентах для синтезирования виртуальной картинки на синтезирующую серверную сторону; анализируя запрос пользователя, синтезирующая серверная сторона получает метки компонентов и соответствующие номера слоев всех компонентов, а также получает соответствующие файлы изображений компонентов согласно полученным меткам компонентов и соответствующим номерам слоев.
Информация о компонентах содержит, как минимум:
метку компонента, идентифицирующую данный компонент единственным образом, и соответствующий номер слоя компонента.
Трансформирование файлов изображения компонента в заданный формат, в частности, содержит следующие шаги:
b11) добавляют цвета из локальной таблицы цветов файла изображения компонента в глобальную таблицу цветов и оценивают, превышает глобальная таблица цветов максимальное число цветов или нет; если глобальная таблица цветов превышает максимальное число цветов, то рассчитывают наименее отдаленный цвет и добавляют данный рассчитанный наименее удаленный цвет в глобальную таблицу цветов; в противном случае, непосредственно добавляют цвета из локальной таблицы цветов в глобальную таблицу цветов;
b12) оценивают, прозрачна ли каждая пиксельная точка данного кадра; если каждая пиксельная точка кадра прозрачна, то принимают цвет пиксельной точки согласно предыдущему кадру, ассоциированному с данным кадром; в противном случае принимают цвет пиксельной точки данного кадра;
b13) после отображения в расширении управления графикой в файле изображения компонента задают вид обработки единым образом, а именно: восстанавливают цвет области, где отображается графика, в качестве обязательного цвета фона.
Заявленный способ дополнительно содержит следующие шаги:
получают длительность фиксации отображения каждого кадра от расширения управления изображением в файле изображения компонента или в файле изображения промежуточной картинки.
Синтезирование кадра компонента и соответствующиих кадров промежуточной картинки в соответствии с длительностью фиксации отображения каждого кадра на шаге g) содержит следующие действия:
g11) вычисляют суммарную длительность отображения всех кадров в промежуточной картинке и, в то же время, вычисляют суммарную длительность отображения всех кадров в компоненте, и принимают наименьшее общее кратное для обеих вычисленных сумм длительности отображения в качестве суммарной длительности отображения всех кадров в синтезированной картинке;
g12) определяют точку вставки кадра в соответствии с числом кадров данного компонента и с длительностью фиксации отображения каждого кадра в нем, с числом кадров промежуточной картинки и длительностью фиксации отображения каждого кадра в ней, а также с суммарной длительностью фиксации отображения всех кадров, полученных на шаге g);
g13) синтезируют кадр компонента и кадр промежуточной картинки в каждой точке вставки.
Синтезирование соответствующих кадров данного компонента и соответствующих кадров промежуточной картинки в соответствии с длительностью фиксации отображения каждого кадра на шаге g) дополнительно содержит следующие действия:
g21) вычисляют суммарную длительность отображения всех кадров в промежуточной картинке и, в то же время, рассчитывают суммарную длительность отображения всех кадров в данном компоненте, и принимают большее значение суммарной длительности отображения данного компонента и суммарной длительности фиксации промежуточной картинки;
g22) определяют точку вставки этого кадра в соответствии с длительностью фиксации отображения каждого кадра в данном компоненте, с длительностью фиксации отображения каждого кадра в промежуточной картинке, а также с большим значением суммарной длительности фиксации данного компонента и суммарной длительности фиксации промежуточной картинки;
g23) синтезируют кадр компонента и кадр промежуточной картинки в каждой точке вставки.
Если длительность фиксации отображения каждого кадра в промежуточной картинке и длительность фиксации отображения каждого кадра в данном компоненте одинаковы, то синтезирование соответствующих кадров данного компонента и кадров промежуточной картинки в соответствии с длительностью фиксации отображения каждого кадра в них на шаге g) дополнительно содержит следующие шаги:
g31) вычисляют наименьшее общее кратное количества кадров этого компонента и количества кадров промежуточной картинки;
g32) определяют точку вставки кадра в соответствии с количеством кадров данного компонента, количеством кадров промежуточной картинки и наименьшим общим кратным количества кадров данного компонента и количества кадров промежуточной картинки;
g33) синтезируют кадр компонента и кадра промежуточной картинки в каждой точке вставки.
Если длительность фиксации отображения кадров промежуточной картинки и длительность фиксации отображения кадров данного компонента одинаковы, при этом и число кадров данного компонента, и число кадров промежуточной картинки являются степенью числа 2, то синтезирование соответствующих кадров данного компонента и кадров промежуточной картинки соответственно длительности фиксации отображения каждого кадра на шаге g) дополнительно включает следующие шаги:
g41) принимают наибольшее значение количества кадров компонента и количества кадров промежуточной картинки;
g42) определяют точки вставки кадра в соответствии с количеством кадров компонента, количеством кадров промежуточной картинки и наибольшим значением количества кадров компонента и количества кадров промежуточной картинки;
g43) синтезируют кадр компонента и кадр промежуточной картинки в каждой точке вставки.
Синтезирование на шаге g) дополнительно содержит следующие шаги:
g1) анализируют каждую пиксельную точку кадра в данном компоненте, оценивая, является ли прозрачным цвет данной пиксельной точки; если цвет данной пиксельной точки является прозрачным, что означает, что цвет соответствующей пиксельной точки синтезированного кадра такой же, как и цвет соответствующей пиксельной точки ассоциированного кадра промежуточной картинки, то возвращаются к шагу g1) и продолжают обрабатывать следующую пиксельную точку; в противном случае выполняют шаг g2);
g2) оценивают, есть ли в глобальной таблице цветов промежуточной картинки цвет, эквивалентный цвету данной пиксельной точки; если в глобальной таблице цветов промежуточной картинки есть цвет, эквивалентный цвету данной пиксельной точки, то маркируют соответствующую пиксельную точку синтезированного кадра с применением эквивалентного цвета, возвращаются к шагу g1) и продолжают обработку следующей пиксельной точки; в противном случае выполняют шаг g3);
g3) оценивают, до конца ли заполнена глобальная таблица цветов промежуточной картинки; если глобальная таблица цветов промежуточной картинки заполнена не до конца, то заполняют глобальную таблицу цветов промежуточной картинки цветом соответствующей пиксельной точки кадра данного компонента и маркируют соответствующую пиксельную точку синтезированного кадра этим цветом; если глобальная таблица цветов заполнена до конца, то ищут наименее отдаленный цвет в глобальной таблице цветов промежуточной картинки и маркируют соответствующую пиксельную точку синтезированного кадра этим цветом.
Файл изображения является взаимозаменяемым файлом формата графического обмена (GIF) в формате файлов изображения.
В способе синтезирования динамических виртуальных картинок, обеспеченном заявленным изобретением, перед синтезированием виртуальных картинок форматы всех компонентов унифицируют в стандартный формат, при этом во время процесса синтезирования принимают вид вставки длительности фиксации кадра для определения количества кадров синтезированной виртуальной картинки, длительности фиксации отображения каждого кадра и кадра в промежуточной картинке, который необходимо синтезировать с определенным кадром в этом компоненте, и, в то же время, после процесса синтезирования применяют покадровый сравнительный алгоритм сжатия, начиная с последнего кадра.
Таким образом, осуществляют синтезирование динамических виртуальных картинок, благодаря чему пользователю предоставляют улучшенную услугу, более удовлетворяющую пользователя. К тому же технология синтезирования динамических виртуальных картинок может принести большой доход провайдерам услуг, поскольку, как показало проведенное исследование, 10% постоянных пользователей сети Интернет стремятся, а более 85% постоянных пользователей сети Интернет - очень сильно стремятся, синтезировать динамические виртуальные картинки.
Краткое описание чертежей
На фиг.1 показана блок-схема, представляющая процесс осуществления данного способа в соответствии с реализацией настоящего изобретения.
Фиг.2 - это схематическое изображение, представляющее процесс определения точки вставки кадра во время синтезирования в реализации настоящего изобретения.
Подробное раскрытие изобретения
Для пояснения цели, технической схемы и преимуществ настоящего изобретения далее оно раскрыто подробно со ссылками на несколько вариантов осуществления.
Ключевая идея настоящего изобретения заключается в следующем: после чтения каждого компонента выполняют стандартное форматирование данного компонента с применением единой глобальной таблицы цветов и с применением единого способа обработки кадра; и затем в соответствии с длительностью фиксации каждого кадра этого компонента и каждого кадра промежуточной картинки определяют точку вставки кадра для синтезирования и выполняют синтезирование кадра этого компонента и кадра промежуточной картинки в каждой точке вставки. Дополнительно, чтобы уменьшить размер синтезированной динамической виртуальной картинки, после синтезирования может быть выполнено покадровое сравнительное сжатие, начиная с последнего кадра.
Поскольку каждый компонент виртуальной картинки является файлом изображения GIF, то перед началом процесса синтезирования требуется пометить все компоненты виртуальной картинки, которые необходимо синтезировать, так, чтобы каждый компонент был идентифицирован единственной меткой. В то же время необходимо определить номер слоя каждого компонента в соответствии с порядком расположения друг за другом каждого компонента в виртуальной картинке; хотя номер слоя и метка каждого компонента независимы друг от друга, во время синтезирования может быть только один компонент с определенным номером слоя. В общем, порядок следования от фона к переднему плану использует возрастающие номера слоев, иначе говоря, номера слоев переднего плана больше, чем номера слоев фона, в таком положении компоненты с большими номерами слоев могут перекрывать компоненты с меньшими номерами слоев, например: портрет может перекрывать фон, рука может перекрывать тело и т.д.
После того как определят метку и номер слоя каждого компонента, все файлы компонентов сохраняют соответственно метке компонента и номеру слоя, чтобы организовать структуру каталога, например: метка компонента автомобиля - 4, а номер слоя - 20; метка компонента цветка - 8, а номер слоя - 12 и т.д., при этом удобно читать компоненты во время синтезирования виртуальной картинки.
В общем, синтезирование виртуальной картинки запускается и становится возможным в соответствии с запросом пользователя; перед отсылкой запроса пользователю уже известно, какие компоненты содержит виртуальная картинка, которую необходимо синтезировать, а также соответствующие метки и номера слоев этих компонентов, например: пользователь приобретает необходимые компоненты заранее, выбирает подходящие друг другу определенный фон и определенную ткань. Таким образом, когда пользователь отсылает запрос, данный запрос будет содержать информацию обо всех компонентах; иначе говоря, пользователь посылает свою идентификационную информацию вместе с информацией о компонентах для синтезирования виртуальной картинки на сетевой сервер, например, следующим образом: идентификатор пользователя, метка 1-го компонента и соответствующий номер слоя, метка 2-го компонента и соответствующий номер слоя... метка n-го компонента и соответствующий номер слоя. Здесь сервер для реализации функции синтезирования изображения назван синтезирующим сервером; идентификатор пользователя может быть регистрационным именем или регистрационной меткой соответствующего пользователя.
Как показано на фиг.1, процесс осуществления синтезирования динамической виртуальной картинки в этом варианте настоящего изобретения содержит следующие шаги:
Шаг 101: когда пользователь запрашивает синтезирование виртуальной картинки, то он посылает пользовательский запрос, содержащий идентификационную информацию пользователя и информацию о компонентах, на сторону синтезирующего сервера; синтезирующий сервер анализирует полученный пользовательский запрос и получает из пользовательского запроса число компонентов для синтезирования виртуальной картинки, а также соответствующую метку и номер слоя каждого компонента; и затем соответствующий файл изображения компонента может быть получен из структуры каталога компонентов в соответствии с меткой компонента и соответствующим номером слоя.
Шаг 102: после определения всех компонентов, необходимых для синтезирования данной виртуальной картинки в текущий момент, синтезирующий сервер должен сначала прочесть шаблон виртуальной картинки, а затем, в соответствии с различными номерами слоев, синтезирует в данном шаблоне каждый компонент один за другим.
Поскольку каждый пользователь может выбрать различные номера компонентов с различными номерами слоев, то шаблон должен быть наложен на базовый шаблон виртуальной картинки, где шаблон - это GIF-файл, сгенерированный в соответствии с заданным форматом, являющийся изображением белого цвета или прозрачным изображением; шаблон можно также считать предварительно синтезированной промежуточной виртуальной картинкой. В общем, шаблон может быть автоматически добавлен синтезирующим сервером.
Шаг 103: после считывания шаблона виртуальной картинки, в соответствии с меткой компонента и номером слоя, синтезирующий сервер считывает соответствующие файлы изображений компонента, начиная от компонента с меньшим номером слоя.
Конкретный процесс заключается в следующем: соответственно приведенному в таблице GIF-формату файла синтезирующий сервер читает заголовок GIF-файла, дескриптор логического экрана, глобальную таблицу цветов, расширение приложения, расширение управления графикой, дескриптор изображения, данные изображения и т.д.; если имеется локальная таблица цветов, то синтезирующему серверу необходимо считать локальную таблицу цветов, при этом он сохраняет данную таблицу в соответствующей структуре памяти. Если данный компонент является динамическим GIF-изображением, то синтезирующему серверу необходимо считать множество расширений управления графикой, дескрипторов изображения и данных изображения, чтобы сформировать многокадровое изображение. Если каждый кадр имеет свою локальную таблицу цветов, то цвет изображения в этом кадре будет определен локальной таблицей цветов вместо того, чтобы определяться глобальной таблицей цветов. Можно узнать, является данный компонент динамическим изображением GIF или нет, выяснив, есть ли в этом GIF-файле множественные кадры; если хотя бы один из синтезированных компонентов является многокадровым, то синтезированная виртуальная картинка является многокадровой и динамической.
Поскольку расширение комментария и расширение простого текста в GIF-файле бесполезны для синтезирования виртуальной картинки, то расширение комментария и расширение простого текста можно временно опустить во время чтения изображения GIF с целью уменьшить размер синтезируемого файла.
Шаг 104: считанные файлы изображений компонентов приводят к заданному формату, иначе говоря, выполняют инициализацию формата.
Из данного описания очевидно, что синтезирование динамического изображения GIF с позиции расширения управления графикой в файловом формате GIF очень затруднено из-за трех проблем: 1) в GIF-файле декодер может выполнить четыре вида процессов с отображенным кадром, что означает, что есть четыре типа динамических GIF-ов, однако статический GIF не может включать в себя разницу между этими четырьмя типами, поскольку статический GIF содержит только один кадр; 2) поскольку каждый кадр в многокадровом GIF может иметь собственную локальную таблицу цветов или может использовать цвета из глобальной таблице цветов вместо локальной таблицы цветов, то подобная ситуация может привести к изменению многокадровых GIF-файлов; 3) поскольку количество кадров в GIF-файле каждого компонента отличается от количества кадров других компонентов, а длительность фиксации отображения каждого кадра также отличается от других, то эта ситуация может также привести к изменению многокадровых GIF-файлов.
В отношении указанных проблем в вариантах осуществления настоящего изобретения две вышеперечисленные проблемы могут быть решены путем форматирования GIF-компонента, в то время как третья проблема будет решена во время синтезирования. Конкретный способ форматирования, в соответствии с реализациями настоящего изобретения, приведен ниже:
а1) таблицы цветов унифицируют, а именно: если количество цветов превышает максимальное количество цветов в глобальной таблице цветов, то при добавлении цветов локальной таблицы цветов в глобальную таблицу цветов вновь добавленные цвета будут заменены наименее удаленными цветами.
В данном случае расстояние между цветами определяют как квадратичную сумму двух значений красного, зеленого и синего цветов, соответственно, и те два цвета, которые имеют минимальную квадратичную сумму, называются ближайшими цветами.
b1) каждый кадр можно превратить в изображение независимым образом; если кадр должен быть ассоциирован с предыдущим кадром для независимого превращения в изображение, то этот кадр будет ассоциирован с предыдущим кадром для независимого формирования изображения с унифицированным форматом, при этом способ обработки после отображения в расширении управления графикой может быть унифицирован следующим образом: в качестве цвета фона обязательным образом восстанавливают цвет области, в которой отображают графику.
В данном случае конкретный процесс синтезирования текущего кадра с предыдущим ассоциированным кадром таков: анализируют каждую пиксельную точку в текущем кадре и окрашивают каждую пиксельную точку заново; если она прозрачна, то принимают цвет соответствующей пиксельной точки предыдущего ассоциированного кадра; в противном случае, используют цвет пиксельной точки текущего кадра.
Цвета из локальной таблицы цветов в процессе форматирования постепенно добавляют в глобальную таблицу цветов, в то время как каждый кадр превращается в изображение независимым образом; каждый форматированный компонент имеет только глобальную таблицу цветов, каждый кадр здесь можно превратить в изображение, при этом способ обработки единый.
Шаг 105: синтезируют форматированный компонент и предварительно синтезируют промежуточную картинку. Синтезирование на этом шаге можно дополнительно разделить на два шага:
а2) в соответствии с количеством кадров и длительностью фиксации отображения каждого кадра компонента и с длительностью фиксации отображения каждого кадра промежуточной картинки определяют синтезирование определенного кадра в этом компоненте и кадра в промежуточной картинке, а именно: определяют соответствующие отношения синтезирования между кадрами этого компонента и кадрами промежуточной картинки. В данном случае длительность фиксации отображения каждого кадра может быть получена от расширения управления изображением файла изображения компонента или от расширения управления изображением промежуточной картинки.
Поскольку этот компонент может быть динамическим и может иметь множественные изображения, и поскольку промежуточная картинка также может быть многокадровой, более того, поскольку длительность фиксации отображения изображений кадра также может быть различной, то для того, чтобы синтезировать текущий компонент и промежуточную картинку, в первую очередь необходимо определить количество кадров синтезированного изображения, а также определить, какой кадр в промежуточной картинке должен быть синтезирован с определенным кадром в текущем компоненте, а именно: в первую очередь определяют точку вставки.
b2) в каждой точке вставки синтезируют текущий кадр компонента и текущий кадр промежуточной картинки, а именно: вставляют текущий кадр компонента в текущий кадр промежуточной картинки.
В процессе синтезирования на шагах а2) и b2) главным является определение точки вставки в соответствии с релевантной информацией о кадрах компонента и о кадрах промежуточной картинки; к релевантной информации здесь относится: количество кадров компонента, длительность фиксации отображения каждого кадра компонента, количество кадров промежуточной картинки и длительность отображения каждого кадра промежуточной картинки. Общий способ определения точки вставки кадра заключается в следующем.
Сначала рассчитывают суммарную длительность отображения всех кадров промежуточной картинки и, в то же время, рассчитывают суммарную длительность отображения всех кадров компонента, и затем принимают наименьшее общее кратное обеих рассчитанных суммарных длительностей вывода отображений в качестве суммарной длительности отображения всех кадров в синтезированной картинке.
Затем определяют количество точек вставки кадра компонента и количество точек вставки кадра промежуточной картинки в соответствии с длительностью отображения всех кадров компонента, суммарной длительности отображения всех кадров промежуточной картинки, а также длительность отображения каждого кадра в синтезированной картинке, соответственно; и далее определяют фактическую точку вставки согласно с длительностью фиксации каждого кадра, соответственно. Каждый раз в момент вставки создают один кадр этой синтезируемой картинки и каждый синтезированный кадр создают путем вставки определенного кадра в компоненте в ассоциированный кадр в промежуточной картинке, при этом данный ассоциированный кадр в промежуточной картинке обозначает ближайший кадр промежуточной картинки среди кадров, расположенных перед текущим кадром этого компонента.
Синтезировать кадр в компоненте и ассоциированный кадр в промежуточной картинке означает вставить текущий кадр этого компонента в каждую точку вставки в текущий кадр промежуточной картинки. Во время синтезирования этих двух кадров цвета, использованные текущим кадром этого компонента, добавляют в глобальную таблицу промежуточной картинки; если таблица заполнена, то эти цвета заменяют наименее отдаленными цветами.
Со ссылкой на фиг.2 предположим, что промежуточная картинка имеет три кадра, соответственно, М1, М2 и М3, при этом длительность этих трех кадров равна 40, 50 и 60, соответственно, следовательно, сумма равна 150; компонент имеет три кадра соответственно G1, G2 и G3, при этом длительность этих трех кадров соответственно равна 30, 30 и 40, и, следовательно, сумма равна 100. Таким образом, наименьшее общее кратное этих двух сумм равняется 300, другими словами, суммарная длительность отображения кадров синтезированной виртуальной картинки равна 300. Таким образом, каждый из кадров промежуточной картинки периодически вставляют дважды, так что существует 6 точек вставки, т.е. изображение сменяется 6 раз; поскольку каждый из кадров этого компонента периодически вставляют трижды, следовательно, существует 9 точек вставки, т.е. изображение сменяется 9 раз. Поскольку первая точка вставки промежуточной картинки и первая точка вставки компонента совпадают, т.е. совпадают их первые кадры, тогда как остальные точки вставки не совпадают, то есть всего 14 точек вставки, и, таким образом, формируется 14 синтезированных кадров; соответствующее фактическое положение точек вставки с 1 по 14 показано на фиг.2.
После определения количества синтезированных кадров и длительности фиксации синтезируют кадры, где каждый кадр получают посредством синтезирования кадра в компоненте и ассоциированного кадра в промежуточной картинке, данный ассоциированный кадр определяют соответственно времени вставки кадра, при этом каждый синтезированный кадр получают путем синтезирования кадра компонента, который является ближайшим или совпадает с моментом времени вставки синтезированного кадра, и кадра промежуточной картинки, который является ближайшим или совпадает с моментом времени вставки синтезированного кадра. В данном способе синтезирования еще требуется вставить кадр компонента в соответствующий кадр промежуточной картинки; если есть какие-либо совпадающие кадры, эти два совпадающих кадра будут синтезированы в один кадр. Как показано на фиг.2, вновь синтезированный первый кадр получен путем вставки кадра G1 компонента в кадр М1 промежуточной картинки, вновь синтезированный второй кадр получен путем вставки кадра G2 компонента в кадр М1 промежуточной картинки, вновь синтезированный третий кадр получен путем вставки кадра G2 компонента в кадр М2 промежуточной картинки, вновь синтезированный четвертый кадр получен путем вставки кадра G3 компонента в кадр М2 промежуточной картинки, вновь синтезированный пятый кадр получен путем вставки кадра G3 компонента в кадр М3 промежуточной картинки, вновь синтезированный шестой кадр получен путем вставки кадра G1 компонента в кадр М3 промежуточной картинки, вновь синтезированный седьмой кадр получен путем вставки кадра G2 компонента в кадр М3 промежуточной картинки,... остальные кадры получают аналогично. Здесь вновь синтезированный первый - это синтезированный кадр 1, согласно фиг.2, а остальные кадры могут быть получены аналогично.
Процесс вставки выполняют в соответствии со следующим способом: пока выполняется синтезирование, происходит анализ каждой пиксельной точки определенного кадра компонента: если данный пиксель прозрачен, то цвет соответствующей пиксельной точки синтезированного кадра и цвет соответствующего пикселя ассоциированного кадра промежуточной картинки одинаковы; в случае, если этот пиксель непрозрачен, есть три способа обработки: А) ищут эквивалентный цвет в глобальной таблице цветов промежуточной картинки и маркируют соответствующую пиксельную точку синтезированного кадра этим эквивалентным цветом; В) если такого эквивалентного цвета нет, то выясняют, заполнена ли глобальная таблица цветов промежуточной картинки; если глобальная таблица цветов промежуточной картинки не заполнена, то заполняют глобальную таблицу цветов промежуточной картинки цветом соответствующей пиксельной точки определенного кадра в компоненте и маркируют соответствующую пиксельную точку синтезированного кадра этим цветом; С) если глобальная таблица цветов промежуточной картинки заполнена, то проводят поиск в глобальной таблице цветов промежуточной картинки с целью найти наименее удаленный цвет и маркируют соответствующую пиксельную точку синтезированного кадра этим цветом.
Чтобы уменьшить размер синтезированного файла, для определения суммарной длительности фиксации синтезированного кадра может быть использовано большее значение суммарной длительности фиксации этого компонента и большее значение суммарной длительности фиксации промежуточной картинки вместо вышеупомянутого наименьшего общего кратного. Если снова обратиться к фиг.2, где количество кадров компонента равно 3, длительности равны 40, 50 и 60, соответственно, а суммарная длительность равна 150; количество кадров промежуточной картинки равно 3, длительности равны 30, 30 и 40, соответственно, а суммарная длительность равна 100; при этом максимальное значение суммарной длительности фиксации компонента и суммарной длительности фиксации промежуточной картинки равно 150. На фиг.2 видно, что, если периодический цикл установлен как 150, то фиксация отображения промежуточной картинки будет завершена на М3, т.е. на втором М1; что касается компонента, то его отображение будет завершено между вторым G2 и G3, следовательно, необходимо синтезировать только 7 кадров, соответственно, а именно: необходимо синтезировать кадры с 1 по 7, согласно фиг.2. Из них синтезированный кадр 1 получают путем вставки кадра G1 компонента в кадр М1 промежуточной картинки, синтезированный кадр 2 получают путем вставки кадра G2 компонента в кадр М1 промежуточной картинки, синтезированный кадр 3 получают путем вставки кадра G2 компонента в кадр М2 промежуточной картинки, ... и т.п. Такой процесс позволяет уменьшить размер файла синтезированной картинки, тогда как на восприятие пользователя это влияет незначительно.
Если длительности фиксации отображения кадров промежуточной картинки и длительности фиксации отображения кадров компонента унифицированы, то альтернативным алгоритмом вставки длительности фиксации может быть способ наименьшего общего кратного, а именно: наименьшее общее кратное количества кадров компонента и количества кадров промежуточной картинки принимают в качестве количества кадров синтезированной картинки, например: количество кадров компонента 3 и все длительности фиксации в нем равны 50; количество кадров промежуточной картинки 4 и все длительности фиксации в нем равны 50, следовательно, наименьшее общее кратное количества кадров компонента и количества кадров промежуточной картинки равно 12, иначе говоря, определяют, что кадры компонента периодически вставляют четыре раза, тогда как кадры промежуточной картинки периодически вставляют три раза.
Если длительности фиксации отображения кадров промежуточной картинки и кадров компонента унифицированы, при этом как количество кадров компонента, так и количество кадров промежуточной картинки являются степенью числа 2, то алгоритм вставки длительности фиксации может быть дополнительно трансформирован путем принятия большего значения количества кадров компонента и количества кадров промежуточной картинки. Например, количество кадров компонента равно 2, и длительности фиксации в нем равны 50; количество кадров промежуточной картинки 4, и длительности фиксации в нем все равны 50; следовательно, определяют, что кадры этого компонента периодически вставляют дважды, тогда как кадры промежуточной картинки вставляют только один раз.
Шаг 106: вновь синтезированную виртуальную картинку берут в качестве промежуточной картинки и далее выясняют, все ли запрошенные пользователем компоненты синтезированы; если все компоненты, запрошенные пользователем, синтезированы, то выполняют шаг 107; в противном случае, выполняют шаг 103, где файл изображения компонента следующего слоя считывают последовательно в зависимости от номера слоя для обработки и синтезирования. Этот процесс повторяют до тех пор, пока все компоненты, выбранные пользователем, не будут синтезированы для получения динамической виртуальной картинки, требуемой пользователю.
Шаг 107: поскольку каждый кадр в синтезированном динамическом GIF-файле может сформировать изображение независимо, то этот файл относительно велик, поэтому синтезированная виртуальная картинка требует сжатия, чтобы уменьшить объем занимаемой памяти.
Согласно описанию на шаге 104: синтезированная виртуальная картинка имеет только глобальную таблицу цветов, при этом цвета определены как одинаковые, если соответствующие значения пиксельных точек в кадре являются одинаковыми, в этом случае, в частности, может быть использован следующий алгоритм сжатия: неиспользуемый цвет выбирают в качестве прозрачного цвета и следующий шаг начинают с последнего кадра; значение пиксельной точки текущего кадра сравнивают со значением пиксельной точки предыдущего кадра; если оба значения одинаковы, то цвет этой точки будет изменен на прозрачный и т.д., пока посредством сравнения не будет сжат второй кадр; способы обработки после отображения всех кадров унифицированы как отсутствие процесса обработки данных, поэтому графика останется неподвижной. После выполнения этого алгоритма сжатия каждый кадр записывает только те пиксели, которые отличны от пикселей предыдущих кадров. Размер файла виртуальной картинки, сжатого посредством данного алгоритма сжатия, будет значительно меньшим, например, от нескольких сотен K до менее, чем сто K.
Шаг 108: заголовок GIF-файла, дескриптор логического экрана, глобальная таблица цветов и расширение приложения в структуре памяти, которые использованы для синтезирования виртуальной картинки, записывают в GIF-файл виртуальной картинки, соответственно, в формате GIF-файла, и далее расширение управления графикой, дескриптор изображения и данные об изображении каждого кадра записывают в GIF-файл виртуальной картинки, соответственно, и в конце добавляют концевую часть GIF. Из них данные изображения записывают в GIF-файл виртуальной картинки по способу сжатия LZW.
Стоит сжимать синтезированную виртуальную картинку или нет, определяют в соответствии с конкретными требованиями; если требования на сжатие нет, то синтезированная виртуальная картинка может быть напрямую записана в файл изображения виртуальной картинки кадр за кадром; если требуется процесс сжатия, могут быть выполнены шаги 107 и 108.
После выполнения указанных выше шагов получившаяся в результате синтезированная динамическая виртуальная картинка является многокадровой, каждый кадр и предыдущий ассоциированный кадр вместе формируют изображение, и динамический эффект может быть достигнут путем периодического отображения этих изображений.
Приведенные выше описания - это только предпочтительные варианты осуществления реализации настоящего изобретения и не обязательно ограничивают объем настоящего изобретения.
Изобретение относится к технологиям обработки изображений, в частности к способу синтезирования динамических виртуальных картинок. Технический результат заключается в обеспечении улучшенной услуги для пользователя. Способ содержит следующие действия: а) синтезирующая серверная сторона получает пользовательский запрос на синтезирование виртуальной картинки, отправленный пользователем, и, в соответствии с информацией пользовательского запроса, получает файлы изображений всех компонентов для синтезирования виртуальной картинки; b) поочередно считывают соответствующие файлы изображений компонента в соответствии с номерами слоев каждого компонента и трансформируют полученные файлы изображений компонентов в заданный формат; с) синтезируют компонент, отформатированный на шаге b), и предварительно считанный файл шаблона для формирования промежуточной картинки; d) определяют, все ли компоненты синтезированы; если все компоненты синтезированы, то переходят к шагу е); в противном случае - переходят к шагу f); е) записывают синтезированную виртуальную картинку на основании всех синтезированных компонентов в файл изображения виртуальной картинки и заканчивают процедуру; f) считывают один за другим соответствующие файлы изображения другого компонента согласно номеру слоя каждого компонента и преобразуют полученные файлы изображения компонента в заданный формат; g) синтезируют компонент, отформатированный на шаге f), и предварительно синтезированную промежуточную картинку и возвращаются к шагу d). 13 з.п. ф-лы, 2 ил., 1 табл.
a) синтезирующая серверная сторона получает пользовательский запрос на синтезирование виртуальной картинки, отправленный пользователем, и в соответствии с информацией пользовательского запроса получает файлы изображений всех компонентов для синтезирования виртуальной картинки;
b) поочередно считывают соответствующие файлы изображений компонента в соответствии с номерами слоев каждого компонента и трансформируют полученные файлы изображений компонентов в заданный формат;
c) синтезируют компонент, отформатированный на шаге b), и предварительно считанный файл шаблона для формирования промежуточной картинки;
d) определяют, все ли компоненты синтезированы, если все компоненты синтезированы, то переходят к шагу е), в противном случае переходят к шагу f);
e) записывают синтезированную виртуальную картинку на основании всех синтезированных компонентов в файл изображения виртуальной картинки и заканчивают процедуру;
f) считывают один за другим соответствующие файлы изображения другого компонента согласно номеру слоя каждого компонента и преобразуют полученные файлы изображения компонента в заданный формат;
g) синтезируют компонент, отформатированный на шаге f), и предварительно синтезированную промежуточную картинку, и возвращаются к шагу d).
сжимают кадр за кадром файл изображения, соответствующий синтезированной виртуальной картинке, от последнего кадра до второго кадра, при этом шаг записи синтезированной виртуальной картинки на основании всех синтезированных компонентов в файл изображения виртуальной картинки выполняют следующим образом:
записывают каждый кадр, соответствующий сжатой и синтезированной виртуальной картинке, в файл изображения виртуальной картинки.
последовательно точка за точкой сравнивают пиксельные значения кадра с пиксельными значениями предыдущего кадра и если два пиксельных значения одинаковы, то изменяют цвет точки на прозрачный, если два пиксельных значения пикселя различны, то никаких действий не выполняют.
предварительно получают информацию обо всех компонентах виртуальной картинки, которую необходимо синтезировать, при этом шаг а) содержит следующие действия:
пользователь отправляет запрос пользователя, несущий идентификационную информацию пользователя и информацию о компонентах для синтезирования виртуальной картинки на синтезирующую серверную сторону, анализируя запрос пользователя, синтезирующая серверная сторона получает метки компонентов и соответствующие номера слоев всех компонентов, а также получает соответствующие файлы изображений компонентов согласно полученным меткам компонентов и соответствующим номерам слоев.
метку компонента, идентифицирующую данный компонент единственным образом, и соответствующий номер слоя компонента.
b11) добавляют цвета из локальной таблицы цветов файла изображения компонента в глобальную таблицу цветов и оценивают, превышает глобальная таблица цветов максимальное число цветов или нет, если глобальная таблица цветов превышает максимальное число цветов, то рассчитывают наименее отдаленный цвет и добавляют данный рассчитанный наименее удаленный цвет в глобальную таблицу цветов, в противном случае, непосредственно добавляют цвета из локальной таблицы цветов в глобальную таблицу цветов;
b12) оценивают, прозрачна ли каждая пиксельная точка данного кадра, если каждая пиксельная точка кадра прозрачна, то принимают цвет пиксельной точки согласно предыдущему кадру, ассоциированному с данным кадром, в противном случае принимают цвет пиксельной точки данного кадра;
b13) после отображения в расширении управления графикой в файле изображения компонента задают вид обработки единым образом, а именно восстанавливают цвет области, где отображается графика, в качестве обязательного цвета фона.
получают длительность фиксации отображения каждого кадра от расширения управления изображением в файле изображения компонента или в файле изображения промежуточной картинки.
g11) вычисляют суммарную длительность отображения всех кадров в промежуточной картинке и в то же время вычисляют суммарную длительность отображения всех кадров в компоненте и принимают наименьшее общее кратное для обеих вычисленных сумм длительности отображения в качестве суммарной длительности отображения всех кадров в синтезированной картинке;
g12) определяют точку вставки кадра в соответствии с числом кадров данного компонента и с длительностью фиксации отображения каждого кадра в нем, с числом кадров промежуточной картинки и длительностью фиксации отображения каждого кадра в ней, а также с суммарной длительностью фиксации отображения всех кадров, полученных на шаге g);
g13) синтезируют кадр компонента и кадр промежуточной картинки в каждой точке вставки.
g21) вычисляют суммарную длительность отображения всех кадров в промежуточной картинке и в то же время рассчитывают суммарную длительность отображения всех кадров в данном компоненте и принимают большее значение суммарной длительности отображения данного компонента и суммарной длительности фиксации промежуточной картинки;
g22) определяют точку вставки этого кадра в соответствии с длительностью фиксации отображения каждого кадра в данном компоненте, с длительностью фиксации отображения каждого кадра в промежуточной картинке, а также с большим значением суммарной длительности фиксации данного компонента и суммарной длительности фиксации промежуточной картинки;
g23) синтезируют кадр компонента и кадр промежуточной картинки в каждой точке вставки.
g31) вычисляют наименьшее общее кратное количества кадров этого компонента и количества кадров промежуточной картинки;
g32) определяют точку вставки кадра в соответствии с количеством кадров данного компонента, количеством кадров промежуточной картинки и наименьшим общим кратным количества кадров данного компонента и количества кадров промежуточной картинки;
g33) синтезируют кадр компонента и кадр промежуточной картинки в каждой точке вставки.
g41) принимают наибольшее значение количества кадров компонента и количества кадров промежуточной картинки;
g42) определяют точки вставки кадра в соответствии с количеством кадров компонента, количеством кадров промежуточной картинки и наибольшим значением количества кадров компонента и количества кадров промежуточной картинки;
g43) синтезируют кадр компонента и кадр промежуточной картинки в каждой точке вставки.
g1) анализируют каждую пиксельную точку кадра в данном компоненте, оценивая, является ли прозрачным цвет данной пиксельной точки, если цвет данной пиксельной точки является прозрачным, то означает, что цвет соответствующей пиксельной точки синтезированного кадра такой же, как и цвет соответствующей пиксельной точки ассоциированного кадра промежуточной картинки, то возвращаются к шагу g1) и продолжают обрабатывать следующую пиксельную точку, в противном случае выполняют шаг g2);
g2) оценивают, есть ли в глобальной таблице цветов промежуточной картинки цвет, эквивалентный цвету данной пиксельной точки, если в глобальной таблице цветов промежуточной картинки есть цвет, эквивалентный цвету данной пиксельной точки, то маркируют соответствующую пиксельную точку синтезированного кадра с применением эквивалентного цвета, возвращаются к шагу g1) и продолжают обработку следующей пиксельной точки, в противном случае выполняют шаг g3);
g3) оценивают, до конца ли заполнена глобальная таблица цветов промежуточной картинки, если глобальная таблица цветов промежуточной картинки заполнена не до конца, то заполняют глобальную таблицу цветов промежуточной картинки цветом соответствующей пиксельной точки кадра данного компонента и маркируют соответствующую пиксельную точку синтезированного кадра этим цветом, если глобальная таблица цветов заполнена до конца, то ищут наименее отдаленный цвет в глобальной таблице цветов промежуточной картинки и маркируют соответствующую пиксельную точку синтезированного кадра этим цветом.
CN 1453719, 05.11.2003 | |||
УСТРОЙСТВО ОБРАБОТКИ ЦВЕТНЫХ ИЗОБРАЖЕНИЙ | 1999 |
|
RU2159958C1 |
RU 2193825 С2, 27.11.2002 | |||
Редукционный клапан | 1981 |
|
SU1067479A2 |
Много этажный пресс для формования и вулканизации резиновых изделий | 1941 |
|
SU64154A1 |
Припой для низкотемпературной пайки | 1987 |
|
SU1479250A1 |
Сектор дискового вакуум-фильтра | 1986 |
|
SU1389817A1 |
Авторы
Даты
2009-01-10—Публикация
2005-01-06—Подача