СПОСОБ И УСТРОЙСТВО ОБРАБОТКИ ИЗОБРАЖЕНИЯ ДЛЯ СРЕДСТВА ДИАЛОГОВОГО ОБМЕНА СООБЩЕНИЯМИ
IMAGE PROCESSING METHOD AND DEVICE FOR INSTANT MESSAGING TOOLS

Область техники
Настоящее изобретение относится к области компьютеров, в частности к способу и устройству обработки изображения для средства диалогового обмена сообщениями.
Предшествующий уровень техники
С быстрым развитием интернет-технологий, широкое распространение получили средства диалогового обмена сообщениями или интернет-пейджеры. Пользователи часто используют эти средства диалогового обмена сообщениями для отправки большого количества изображений. Некоторые из этих изображений пользователям необходимо обработать до отправки.
Существующие средства диалогового обмена сообщениями имеют функцию снимка экрана или скриншота и функцию редактирования. Пользователи могут захватить изображение использованием функции скриншота, а затем обработать изображение использованием функции редактирования, например, добавить контент к изображению захваченного снимка или удалить часть контента из изображения. Рисование линии на изображении является одним из способов обработки изображения. Существующая функция редактирования позволяет рисовать линию на изображении следующим образом. Когда нажата основная кнопка мыши, то функция редактирования получает данные о положении курсора в качестве начального положения. Затем, пользователь может переместить мышь, при этом курсор перемещается, следуя за перемещением мыши до тех пор, пока пользователь не отпустит основную кнопку мыши. В результате, функцией редактирования рисуется прямая линия между положением, в котором расположен курсор при отпускании основной кнопки мыши, и начальным положением.
В процессе разработки настоящего технического решения, изобретатель обнаружил, что существует по крайней мере следующая проблема предшествующего уровня техники: существующая функция редактирования может рисовать только прямую линию между начальным положением, в котором расположен курсор при нажатии основной кнопки мыши, и положением, в котором расположен курсор при отпускании основной кнопки мыши, но не может рисовать линию, соответствующую действительной траектории перемещения курсора. И если пользователю необходимо при редактировании использовать кривую, он должен постоянно несколько раз подряд нажимать основную кнопку, перемещать мышь и отпускать основную кнопку или использовать другой графический редактор другого программного обеспечения для целей редактирования. Предшествующий этому изобретению способ редактирования является относительно сложным, а редактирование с использованием кривой линии является неудовлетворительным из-за невозможности добиться плавности. Последний способ редактирования требует выполнения серии относительно сложных операций, таких как первоначальное сохранение изображения, захваченное функцией скриншота программного обеспечения средства диалогового обмена сообщениями, открытие и редактирование сохраненного изображения с использованием программного обеспечения для обработки изображений, а затем сохранение отредактированного изображения.
Раскрытие изобретения
С целью создания удобства для пользователя в виде возможности рисования линии, соответствующей действительно траектории перемещения курсора, здесь раскрывается способ и устройство для обработки изображения для средства диалогового обмена сообщениями.
В частности, по настоящему изобретению предлагается способ обработки изображения для средства диалогового обмена сообщениями, характеризующийся тем, что включает следующие операции: получение данных области редактирования, захваченной средством диалогового обмена сообщениями, где данные области редактирования включают по крайней мере интервал значений абсцисс и интервал значений ординат; получение и запись данных положения курсора в реальном времени после получения начального уведомления и до получения конечного уведомления; и генерация линейного сегмента в соответствии с данными положения текущего курсора, записанными данными положения предшествующего курсора и данными области редактирования.
Здесь, линейный сегмент генерируют в области редактирования между текущим курсором и предшествующим курсором в соответствии с данными положения текущего курсора, записанными данными положения предшествующего курсора и данными области редактирования.
Также, по настоящему изобретению предлагается устройство обработки изображения для средства диалогового обмена сообщениями, характеризующееся тем, что включает: первый модуль получения, выполненный с возможностью получения данных области редактирования, захваченной Интернет-пейджером, где данные области редактирования включают по крайней мере интервал значений абсцисс и интервал значений ординат; второй модуль получения, выполненный с возможностью получения и записи данных положения курсора в реальном времени после получения начального уведомления и до получения конечного уведомления; и модуль генерации, выполненный с возможностью генерации линейного сегмента в соответствии с данными положения текущего курсора и записанными данными положения предшествующего курсора, которые были получены вторым модулем получения, а также данными области редактирования, которые были получены первым модулем получения.
Здесь, модуль генерации выполнен с возможностью генерировать линейный сегмент в области редактирования между текущим курсором и предшествующим курсором в соответствии с данными положения текущего курсора, записанными данными положения предшествующего курсора и данными области редактирования, где данные положения текущего курсора и записанные данные положения предшествующего курсора были получены вторым модулем получения, а данные области редактирования были получены первым модулем получения.
Краткое описание чертежей
Фиг. 1 - блок-схема алгоритма способа обработки изображения для средства диалогового обмена сообщениями по примеру 1 осуществления настоящего изобретения;
фиг. 2 - блок-схема алгоритма способа обработки изображения для средства диалогового обмена сообщениями по примеру 2 осуществления настоящего изобретения;
фиг. 3 - схематичный вид области редактирования по примеру 2 осуществления настоящего изобретения;
фиг. 4 - блок-схема алгоритма способа обработки изображения для средства диалогового обмена сообщениями по примеру 3 осуществления настоящего изобретения; и
фиг. 5 - блок-схема устройства обработки изображения для средства диалогового обмена сообщениями по примеру 4 осуществления настоящего изобретения.
Лучший вариант осуществления изобретения
Для целей более ясного понимания целей, технических решений и преимуществ настоящего изобретения, далее настоящее изобретение будет описано более подробно с использованием примеров со ссылками на сопровождающие чертежи.
Способ обработки изображения для средства диалогового обмена сообщениями по примерам осуществления настоящего изобретения включает следующие операции: получение данных области редактирования, захваченной средством диалогового обмена сообщениями, где данные области редактирования включают по крайней мере интервал значений абсцисс и интервал значений ординат; получение и запись данных положения курсора в реальном времени после получения начального уведомления и до получения конечного уведомления и генерация линейного сегмента в соответствии с данными положения текущего курсора, записанными данными положения предшествующего курсора и данными области редактирования.
С целью повышения удобства для пользователя, настоящее изобретение позволяет пользователю обрабатывать только часть изображения, которая находится в пределах захваченной области редактирования во время обработки изображения. Линейный сегмент может быть сгенерирован в области редактирования между текущим курсором и предшествующим курсором в соответствии с данными положения текущего курсора, записанными данными положения предшествующего курсора и данными области редактирования.
В соответствии с упомянутыми выше примерами осуществления настоящего изобретения, данные положения текущего курсора получают в реальном времени, и линейный сегмент генерируют в реальном времени, при этом линейный сегмент, сгенерированный между текущим курсором и предшествующим курсором, главным образом является таким же, как действительная траектория перемещения курсора (т.е. нарисованная линия является по существу такой же, как траектория перемещения курсора). Поэтому пользователь может редактировать кривую в пределах области редактирования с помощью простых действий. Это повышает эффективность работы пользователя и тем самым улучшает практичность средства диалогового обмена сообщениями.
Здесь, далее, будут описаны примеры осуществления настоящего изобретения со ссылками на сопровождающие чертежи.
Пример 1
Как показано на фиг. 1, по этому примеру осуществления настоящего изобретения обеспечивается способ обработки изображения для средства диалогового обмена сообщениями, в частности способ, исполняемый функцией редактирования для средства диалогового обмена сообщениями, который включает следующие операции.
Операция 101: получение данных области редактирования, захваченной средством диалогового обмена сообщениями, где данные области редактирования включают по крайней мере интервал значений абсцисс и интервал значений ординат.
В этой операции, пользователь захватывает область редактирования использованием функции скриншота средства диалогового обмена сообщениями.
Операция 102: получение и запись данных положения начального курсора, когда получено начальное уведомление, где данные положения включают по крайней мере координаты.
Когда пользователь нажимает основную кнопку мыши или нажимает сенсорный экран для редактирования области редактирования, функция редактирования получает начальное уведомление, которое является сообщением о нажатии кнопки мыши или сенсорного экрана, а конечным уведомлением является сообщение об отпускании кнопки мыши или сенсорного экрана.
Операция 103: получение данных положения текущего курсора в реальном времени до получения конечного уведомления, генерация линейного сегмента в соответствии с данными положения текущего курсора, записанными данными положения предшествующего курсора и данными области редактирования и обновление записанных данных положения их заменой на данные положения текущего курсора.
Когда пользователь отпускает основную кнопку мыши или сенсорный экран после завершения действий редактирования, функция редактирования получает конечное уведомление, которое является сообщением об отпускании основной кнопки мыши или сенсорного экрана.
Пример 2
После того как пользователь захватил область редактирования использованием функции скриншота средства диалогового обмена сообщениями и запустил функцию редактирования, начинает выполняться способ обработки изображения для средства диалогового обмена сообщениями по этому примеру осуществления настоящего изобретения. В этом примере, данные положения курсора включают координаты и взаимное положение между начальным курсором и областью редактирования. Здесь, далее, этот пример осуществления будет описан подробно со ссылкой на фиг. 2.
Как показано на фиг. 2, по этому примеру осуществления настоящего изобретения обеспечивается способ обработки изображения для средства диалогового обмена сообщениями, который включает следующие операции.
Операция 201: получение функцией редактирования данных области редактирования, захваченной средством диалогового обмена сообщениями, где данные области редактирования включают по крайней мере интервал значений абсцисс, интервал значений ординат и линейное уравнение каждой из границ области редактирования.
Область редактирования является прямоугольной и поэтому имеет две пары диагональных точек, причем каждая пара включает две диагональные точки. Здесь, в частности, функция редактирования получает координаты (X1, Y1) и (X2, Y2) двух диагональных точек, входящих в одну из пар диагональных точек, соответственно, и здесь предполагается, что X1<X2 и Y1>Y2. В соответствии с этими координатами (X1, Y1) и (X2, Y2) диагональных точек, в полученные данные области редактирования включается интервал значений абсцисс [X1, X2] и интервал значений ординат [Y2, Y1].
Например, область редактирования, захваченная пользователем использованием функции скриншота средства диалогового обмена сообщениями, является областью редактирования ABCD, как показано на фиг. 3. Здесь фиг. 3 является схематичным видом области редактирования по примеру 2 осуществления настоящего изобретения. Как показано на фиг. 3, область редактирования включает две пары диагональных точек, где в одну пару входит диагональная точка A и диагональная точка C, а во вторую пару входит диагональная точка B и диагональная точка В. Функция редактирования получает координаты двух диагональных точек, входящих в одну из этих двух пар, и предположим, что были получены координаты диагональной точки A и диагональной точки C как (2, 4) и (6, 1), соответственно. В соответствии с координатами (2, 4) диагональной точки A и координатами (6, 1) диагональной точки C, в полученные данные области редактирования включается интервал значений абсцисс [2, 6] и интервал значений ординат [1, 4].
Функция редактирования определяет линейное уравнение каждой из границ, входящих в область редактирования, в соответствии с интервалом значений абсцисс и интервалом значений ординат или в соответствии с полученными координатами двух диагональных точек. Например, в соответствии с интервалом значений абсцисс [2, 6] и интервалом значений ординат [1, 4] или в соответствии с координатами (2, 4) и (6, 1) двух диагональных точек, линейные уравнения границ области редактирования ABCD будут определены как x=2, x=6, y=1 и y=4, соответственно.
Операция 202: получение и запись данных положения начального курсора функцией редактирования при получении начального уведомления, где данные положения включают координаты начального курсора и взаимное положение между начальным курсором и областью редактирования.
В случае использования мыши, пользователь нажимает основную кнопку мыши (например, левую кнопку мыши) и начинает рисовать линию. Когда нажимается основная кнопка мыши, функция редактирования получает начальное уведомление, которое отправляется операционной системой и является сообщением о нажатии кнопки мыши, в качестве уведомления функции редактирования о начале процесса редактирования. Затем, пользователь перемещает мышь, и курсор перемещается, следуя за перемещением мыши. Функция редактирования отслеживает сообщения о перемещении мыши, которые периодически отправляются операционной системой, где каждое такое сообщение включает координаты текущего курсора. Другими словами, после получения начального уведомления, отправленного пользователем с помощью устройства ввода типа мыши или сенсорного экрана, функция редактирования начинает получать координаты текущего курсора в реальном времени. Период отправки операционной системой сообщений о перемещении мыши (т.е. координат текущего курсора) является относительно коротким и обычно составляет несколько миллисекунд или даже меньше, поэтому функция редактирования может получать координаты текущего курсора в реальном времени сразу после получения начального уведомления.
Эта операция будет описана более подробно на примере использования мыши в качестве устройства ввода. Когда пользователь нажимает основную кнопку мыши, функция редактирования получает начальное уведомление и сразу получает координаты (X, Y) текущего курсора в качестве начального курсора за счет отслеживания сообщений о перемещении мыши. Затем функция редактирования получает взаимное положение между начальным курсором и областью редактирования в соответствии с координатами (X, Y) начального курсора и некоторыми данными области редактирования и записывает эти координаты (X, Y) начального курсора и взаимное положение между начальным курсором и областью редактирования. Для удобства описания, координаты курсора, записанные в памяти, будут обозначаться в этом примере как (X', Y').
Здесь, операция определения взаимного положения между начальным курсором и областью редактирования включает: определение того, попадают ли значения абсциссы X и ординаты Y начального курсора в интервал значений абсцисс [X1, X2] и интервал значений ординат [Y2, Y1] области редактирования, соответственно; причем, если ответом является «да», то определяют, что взаимное положение между начальным курсором и областью редактирования является таким, что начальный курсор находится в области редактирования, в противном случае, если ответом является «нет», то определяют, что взаимное положение между начальным курсором и областью редактирования является таким, что начальный курсор находится вне области редактирования.
Например, предположим, что текущим курсором является курсор E, показанный на фиг. 3, а координатами курсора E являются (5, 3). Когда нажимается основная кнопка мыши, функция редактирования сначала получает координаты (5, 3) текущего курсора E в качестве начального курсора сразу после получения начального уведомления, отправленного операционной системой; а затем функция редактирования определяет, находятся ли абсцисса 5 и ордината 3 курсора E в пределах области редактирования ABCD, соответственно. Т.к. определяется, что абсцисса 5 и ордината 3 курсора E попадают в интервал значений абсцисс [2, 6] и интервал значений ординат [1, 4], соответственно, то определяют, что взаимное положение между курсором E и областью редактирования ABCD является таким, что этот курсор находится в области редактирования. Затем записывают координаты (5, 3) курсора E и взаимное положение между курсором E и областью редактирования ABCD, свидетельствующее о нахождении этого курсора в области редактирования.
Операция 203: получение данных положения текущего курсора функцией редактирования, где данные положения текущего курсора включают координаты текущего курсора и взаимное положение между текущим курсором и областью редактирования, которое определяют в соответствии в координатами (X, Y) текущего курсора и некоторыми данными области редактирования.
В частности, после получения координат (X, Y) текущего курсора, функция редактирования определяет, попадают ли значения абсциссы X и ординаты Y текущего курсора в интервал значений абсцисс [X1, X2] и интервал значений ординат [Y2, Y1] области редактирования, соответственно. Если ответом является «да», то определяют, что взаимное положение между текущим курсором и областью редактирования является таким, что текущий курсор находится в области редактирования, в противном случае, если ответом является «нет», то определяют, что взаимное положение между текущим курсором и областью редактирования является таким, что текущий курсор находится вне области редактирования.
Например, предположим, что координатами текущего курсора, полученными функцией редактирования в то же самое время, являются координаты (4, 2) текущего курсора F, показанного на фиг. 3, соответственно, здесь определяют, что абсцисса 4 и ордината 2 текущего курсора F попадают в интервал значений абсцисс [2, 6] и интервал значений ординат [1, 4] области редактирования ABCD, соответственно. Поэтому также определяют, что взаимное положение между текущим курсором F и областью редактирования ABCD является таким, что этот курсор находится в области редактирования.
Операция 204: определение функцией редактирования взаимного положения между текущим курсором и областью редактирования и взаимного положения между записанным курсором и областью редактирования. Если взаимное положение между текущим курсором и областью редактирования и взаимное положение между записанным курсором и областью редактирования являются такими, что как текущий курсор, так и записанный курсор находятся вне области редактирования, то далее выполняют операцию 205; если взаимное положение между текущим курсором и областью редактирования и взаимное положение между записанным курсором и областью редактирования являются такими, что как текущий курсор, так и записанный курсор находятся в области редактирования, то далее выполняют операцию 206; в остальных случаях далее выполняют операцию 207.
Операция 205: обновление функцией редактирования координат (X', Y') курсора, записанного в памяти, и взаимного положения между этим курсором и областью редактирования на координаты (X, Y) текущего курсора и взаимное положение между текущим курсором и областью редактирования, соответственно. Затем выполняют операцию 212.
Операция 206: генерация линейного сегмента между текущим курсором и курсором, записанным в памяти, и обновление функцией редактирования координат (X', Y') курсора, записанного в памяти, и взаимного положения между этим курсором и областью редактирования на координаты (X, Y) текущего курсора и взаимное положение между текущим курсором и областью редактирования, соответственно. Затем выполняют операцию 212.
Период отправки сообщений о перемещении мыши с координатами текущего курсора является относительно коротким, поэтому линейный сегмент генерируется между текущим курсором и курсором, записанным в памяти, практически таким же, как действительная траектория перемещения курсора.
Например, в операции 204 функция редактирования определяет, что взаимное положение между текущим курсором F и областью редактирования ABCD и взаимное положение между записанным курсором E и областью редактирования ABCD являются такими, что как текущий курсор F, так и записанный курсор E находятся в области редактирования. Поэтому выполняется операция 206 для генерации линейного сегмента между текущим курсором F и записанным курсором E и обновления координат курсора E, записанного в памяти, и взаимного положения между курсором E и областью редактирования ABCD на координаты (4, 2) текущего курсора F и взаимное положение между текущим курсором F и областью редактирования ABCD, соответственно.
Операция 207: получение функцией редактирования линейного уравнения линейного сегмента, сформированного записанным курсором и текущим курсором, в соответствии с координатами (X, Y) текущего курсора и координатами (X', Y') записанного курсора.
В частности, в соответствии с координатами (X, Y) текущего курсора и координатами (X', Y') записанного курсора рассчитывают коэффициент наклона и отрезок, отсекаемый на координатной оси, по следующим формулам:
, ,
а затем коэффициент наклона k и отрезок, отсекаемый на координатной оси, b подставляют в выражение y=kx+b, являющееся формулой линейного уравнения линейного сегмента, сформированного записанным курсором и текущим курсором.
Например, предположим, что координаты курсора, записанные в памяти, являются координатами (1, 2) курсора G, показанного на фиг. 3, а взаимное положение между курсором G и областью редактирования ABCD является таким, что этот курсор лежит вне области редактирования, а также предположим, что текущим курсором является курсор H, координатами которого являются (3, 3), и взаимное положение между курсором H и областью редактирования является таким, что этот курсор лежит в области редактирования, тогда при выполнении операции 207 функция редактирования получит линейное уравнение y=0,5x+1,5 линейного сегмента GH в соответствии с координатами (1, 2) записанного курсора G и координатами (3, 3) текущего курсора H.
Операция 208: получение функцией редактирования точки пересечения между линейным сегментом, сформированным текущим курсором и записанным курсором, и каждой из границ области редактирования в соответствии с линейным уравнением каждой из границ, входящих в область редактирования, и линейным уравнением линейного сегмента.
В частности, функция редактирования объединяет линейное уравнение каждой из границ области редактирования и линейное уравнение линейного сегмента в системы уравнений, решает каждую из систем уравнений для получения координат точки пересечения между прямой линией, на которой лежит линейный сегмент, и прямой линий, на которой лежит каждая из границ; а затем выбирает точку пересечения, в которой линейный сегмент пересекает одну из границ области редактирования в соответствии с координатами каждой из точек пересечения.
Точка пересечения, в которой линейный сегмент пересекает одну из границ области редактирования, должна быть расположена на линейном сегменте. Абсциссы каждой из точек этого линейного сегмента входят в интервал между абсциссой X' записанного курсора и абсциссой X текущего курсора, а ординаты каждой из точек этого линейного сегмента входят в интервал между абсциссой Y' записанного курсора и абсциссой Y текущего курсора. Поэтому вышеуказанная операция выбора точки пересечения, в которой линейный сегмент пересекает одну из границ области редактирования в соответствии с координатами каждой из точек пересечения, включает: из точек пересечения выбирают точку пересечения, абсцисса которой имеет значение между значением абсциссы X' записанного курсора и значением абсциссы X текущего курсора, а ордината которой имеет значение между значением ординаты Y' записанного курсора и значением ординаты Y текущего курсора.
Например, линейные уравнения x=2, x=6, y=1 и y=4 границ области редактирования ABCD объединяют с линейным уравнением y=0,5x+1,5 линейного сегмента GH с получением четырех систем уравнений. Затем эти системы уравнений решают с получением координат (2, 2,5), (6, 4,5), (-1, 1) и (5, 4) четырех точек пересечения соответственно. Точка пересечения (2, 2,5), абсцисса которой входит в интервал [1, 3] и ордината которой входит в интервал [2, 3], выбирается из этих четырех точек пересечения. Для удобства описания, выбранная точка пересечения обозначена как точка K, т.е. точка пересечения K является точкой пересечения, в которой линейный сегмент GH пересекает одну из границ области редактирования ABCD.
Далее, предпочтительно, если операция получения линейного уравнения каждой из границ области редактирования может быть пропущена в операции 201 и выполнена вместо этого в операции 208.
Операция 209: определение взаимного положения между текущим курсором и областью редактирования и взаимного положения между записанным курсором и областью редактирования. Если взаимное положение между текущим курсором и областью редактирования и взаимное положение между записанным курсором и областью редактирования являются такими, что текущий курсор находится в области редактирования, а записанный курсор находится вне области редактирования, то далее выполняют операцию 210, а если взаимное положение между текущим курсором и областью редактирования и взаимное положение между записанным курсором и областью редактирования являются такими, что текущий курсор находится вне области редактирования, а записанный курсор находится в области редактирования, то далее выполняют операцию 211.
Например, функция редактирования определяет, что взаимное положение между текущим курсором H и областью редактирования и взаимное положение между записанным курсором G и областью редактирования являются такими, что текущий курсор H находится в области редактирования, а записанный курсор G находится вне области редактирования, то далее выполняют операцию 210.
Операция 210: генерация функцией редактирования линейного сегмента между точкой пересечения и текущим курсором и обновление координат (X', Y') курсора, записанных в памяти, и взаимного положения между этим курсором и областью редактирования на координаты (X, Y) текущего курсора и взаимное положение между текущим курсором и областью редактирования, соответственно. Затем выполняют операцию 212.
Например, линейный сегмент генерируют между точкой пересечения K и текущим курсором H, а затем координаты курсора G, записанные в памяти, и взаимное положение между курсором G и областью редактирования ABCD обновляют на координаты (3, 3) текущего курсора H и взаимное положение между текущим курсором H и областью редактирования ABCD, соответственно, исходя из того, что этот курсор находится в области редактирования.
Операция 211: генерация функцией редактирования линейного сегмента между точкой пересечения и записанным курсором и обновление координат (X', Y') курсора, записанных в памяти, и взаимного положения между этим курсором и областью редактирования на координаты (X, Y) текущего курсора и взаимное положение между текущим курсором и областью редактирования, соответственно. Затем выполняют операцию 212.
В операциях 210 и 211 линейные сегменты генерируют только между точками пересечения и курсорами, которые находятся в области редактирования, поэтому линию можно нарисовать только в пределах области редактирования (т.е. редактирование возможно только для изображения, захваченного функцией скриншота).
Операция 212: определение функцией редактирования, получено ли конечное уведомление, и если ответом является «да», то завершение операций, в противном случае, если ответом является «нет», то возврат к операции 203.
Когда пользователь отпускает устройства ввода, например основную кнопку мыши или сенсорный экран, функция редактирования, отслеживающая уведомления и сообщения операционной системы, уведомляется, что основная кнопка мыши или сенсорный экран отпущены, для окончания редактирования функцией редактирования, тем самым выполнение операций прекращается.
Когда пользователю необходимо редактировать захваченное изображение несколько раз, то вышеуказанные операции с 202 по 212 могут выполняться повторно до тех пор, пока задача редактирования не будет выполнена и функция редактирования не будет отключена пользователем.
Далее, в этом примере функция редактирования может в первую очередь определять, являются ли координаты (X, Y) текущего курсора такими же, как координаты (X', Y') записанного курсора, после получения координат текущего курсора. Если координаты (X, Y) текущего курсора отличаются от координат (X', Y') записанного курсора, то выполняют вышеописанные последующие операции, в противном случае, если координаты (X, Y) текущего курсора являются такими же, как координаты (X', Y') записанного курсора, то вместо выполнения последующих операций повторно получают координаты текущего курсора.
Дополнительно, пользователь может также задать толщину и цвет линии после запуска функции редактирования. При генерации линейного сегмента, функция редактирования сгенерирует линейный сегмент, имеющий толщину и цвет линии, заданные пользователем.
Поскольку линейный сегмент, генерируемый в каждый период времени, практически повторяет траекторию перемещения курсора, то линия, нарисованная пользователем, будет практически такой же, как и вся действительная траектория перемещения курсора.
В этом примере, когда область редактирования захватывается пользователем с помощью функции скриншота средства диалогового обмена сообщениями, изображение в пределах области редактирования сохраняется во внутренней памяти. Всякий раз, когда функцией редактирования рисуется линейный сегмент, изображение в пределах всей области редактирования сохраняется во внутренней памяти. Когда пользователь желает удалить нарисованную линию, соответствующее изображение может быть считано непосредственно из внутренней памяти.
В этом примере осуществления настоящего изобретения, получают данные области редактирования, захваченные с помощью функции скриншота средства диалогового обмена сообщениями; получают и записывают данные положения начального курсора при получении уведомления о нажатии кнопки мыши; и когда вновь получают координаты текущего курсора, генерируют линейный сегмент в соответствии с данными положения текущего курсора, записанными данными положения и данными области редактирования. Функция редактирования отслеживает в реальном времени координаты текущего курсора, отправляемые операционной системой, в каждый период, и поскольку этот период является относительно коротким, то линейный сегмент, генерируемый в каждый период, практически подобен действительной траектории перемещения курсора. Поэтому нарисованная линия является практически такой же, как действительная траектория перемещения курсора.
Пример 3
В этом примере, данные положения курсора включают только координаты курсора и не включают взаимное положение между курсором и областью редактирования. Для цели краткости изложения, операции по этому примеру, являющиеся такими же, как в примере 2 выше, не будут описываться повторно.
Как показано на фиг. 4, по этому примеру осуществления настоящего изобретения обеспечивается способ обработки изображения для средства диалогового обмена сообщениями, который включает следующие операции.
Операция 301: получение функцией редактирования данных области редактирования, захваченной функцией скриншота средства диалогового обмена сообщениями, где данные области редактирования включают по крайней мере интервал значений абсцисс и интервал значений ординат области редактирования.
Операция 302: получение и запись данных положения начального курсора функцией редактирования при получении начального уведомления, т.е. получение и запись функцией редактирования координат (X, Y) текущего курсора в качестве координат начального курсора.
Подобно вышеописанному, координаты записанного курсора обозначены как (X', Y') для удобства пояснения.
Операция 303: получение функцией редактирования данных положения текущего курсора, которые включают координаты (X, Y) текущего курсора, и получение взаимного положения между текущим курсором и областью редактирования в соответствии с координатами текущего курсора.
Операция получения взаимного положения между текущим курсором и областью редактирования является такой же, как операция 203 в примере 2, поэтому описание этой операции здесь приводиться не будет.
Операция 304: получение функцией редактирования взаимного положения между записанным курсором и областью редактирования в соответствии с координатами записанного курсора.
Операция 305: определение функцией редактирования взаимного положения между текущим курсором и областью редактирования и взаимного положения между записанным курсором и областью редактирования. Если взаимное положение между текущим курсором и областью редактирования и взаимное положение между записанным курсором и областью редактирования являются такими, что как текущий курсор, так и записанный курсор находятся вне области редактирования, то далее выполняют операцию 306; если взаимное положение между текущим курсором и областью редактирования и взаимное положение между записанным курсором и областью редактирования являются такими, что как текущий курсор, так и записанный курсор находятся в области редактирования, то далее выполняют операцию 307; в противном случае, если взаимное положение между текущим курсором и областью редактирования отличается от взаимного положения между записанным курсором и областью редактирования, то далее выполняют операцию 308.
Операция 306: обновление функцией редактирования координат записанного курсора на координаты текущего курсора. Затем выполняют операцию 314.
Операция 307: генерация линейного сегмента между записанным курсором и текущим курсором и обновление функцией редактирования координат записанного курсора на координаты текущего курсора. Затем выполняют операцию 314.
Операция 308: определение функцией редактирования линейных уравнений (например, x=X1, x=X2, y=Y1 и y=Y2) границ, входящих в область редактирования, в соответствии с интервалом значений абсцисс [X1, X2] и интервалом значений ординат [Y2, Y1] области редактирования.
Операция 309: получение функцией редактирования линейного уравнения линейного сегмента, сформированного записанным курсором и текущим курсором, в соответствии с координатами (X', Y') записанного курсора и координатами (X, Y) текущего курсора.
Эта операция получения линейного уравнения линейного сегмента является точно такой же, как операция 207 в примере 2, поэтому описание этой операции здесь приводиться не будет.
Операция 310: получение функцией редактирования точки пересечения между линейным сегментом и каждой из границ области редактирования в соответствии с линейным уравнением линейного сегмента и линейными уравнениями границ, входящих в область редактирования.
Эта операция получения точки пересечения между линейным сегментом и каждой из границ области редактирования является точно такой же, как операция 208 в примере 2, поэтому описание этой операции здесь приводиться не будет.
Операция 311: определение функцией редактирования взаимного положения между текущим курсором и областью редактирования и взаимного положения между записанным курсором и областью редактирования. Если взаимное положение между текущим курсором и областью редактирования и взаимное положение между записанным курсором и областью редактирования являются такими, что текущий курсор находится в области редактирования, а записанный курсор находится вне области редактирования, то далее выполняют операцию 312, а если взаимное положение между текущим курсором и областью редактирования и взаимное положение между записанным курсором и областью редактирования являются такими, что текущий курсор находится вне области редактирования, а записанный курсор находится в области редактирования, то далее выполняют операцию 313.
Операция 312: генерация функцией редактирования линейного сегмента между текущим курсором и точкой пересечения и обновление координат записанного курсора на координаты текущего курсора. Затем выполняют операцию 314.
Операция 313: генерация функцией редактирования линейного сегмента между записанным курсором и точкой пересечения и обновление координат записанного курсора на координаты текущего курсора. Затем выполняют операцию 314.
Операция 314: определение функцией редактирования, получено ли конечное уведомление, и если ответом является «да», то завершение операций, в противном случае, если ответом является «нет», то возврат к операции 303.
Когда пользователю необходимо редактировать захваченное изображение несколько раз, то вышеуказанные операции с 302 по 314 могут выполняться повторно до тех пор, пока задача редактирования не будет выполнена и функция редактирования не будет отключена пользователем.
В этом примере, при обновлении координат начального курсора, записанного в памяти, на координаты текущего курсора, функция редактирования может дополнительно записывать взаимное положение между текущим курсором и областью редактирования, а после этого, всякий раз, когда запись обновляется, координаты записанного курсора и взаимное положение между записанным курсором и областью редактирования обновляются на координаты текущего курсора и взаимное положение между текущим курсором и областью редактирования, соответственно, а операция 304 более не выполняется.
В этом примере осуществления настоящего изобретения, получают данные области редактирования, захваченные функцией скриншота средства диалогового обмена сообщениями; получают координаты начального курсора и записывают их при получении начального уведомления, а когда вновь получают координаты текущего курсора, то генерируют линейный сегмент в соответствии с координатами текущего курсора, записанными координатами и данными области редактирования. Функция редактирования отслеживает в реальном времени координаты текущего курсора, отправляемые операционной системой, в каждый период, и поскольку этот период является относительно коротким, то линейный сегмент, генерируемый в каждый период, практически подобен действительной траектории перемещения курсора. Поэтому нарисованная линия является практически такой же, как действительная траектория перемещения курсора.
Пример 4
Как показано на фиг.5, по этому примеру осуществления настоящего изобретения обеспечивается устройство обработки изображения для средства диалогового обмена сообщениями, включающее: первый модуль получения 301, выполненный с возможностью получения данных области редактирования, захваченной Интернет-пейджером, где данные области редактирования включают по крайней мере интервал значений абсцисс и интервал значений ординат; второй модуль получения 302, выполненный с возможностью получения и записи данных положения курсора в реальном времени после получения начального уведомления и до получения конечного уведомления; и модуль генерации 303, выполненный с возможностью генерации линейного сегмента в соответствии с данными положения текущего курсора и записанными данными положения предшествующего курсора, которые были получены вторым модулем получения 302, а также данными области редактирования, которые были получены первым модулем получения 301.
Для дальнейшего повышения удобства для пользователя, в частности, настоящее изобретение позволяет пользователю обрабатывать только часть изображения, которая находится в пределах захваченной области редактирования во время обработки изображения. Модуль генерации 303 имеет возможность генерировать линейный сегмент в области редактирования между текущим курсором и предшествующим курсором в соответствии с данными положения текущего курсора, записанными данными положения предшествующего курсора и данными области редактирования, где данные положения текущего курсора и записанные данные положения предшествующего курсора были получены вторым модулем получения 302, а данные области редактирования были получены первым модулем получения 301.
В частном случае исполнения, модуль генерации включает блок определения и блок генерации. Блок определения выполнен так, чтобы при определении того, что как текущий курсор, так и предшествующий курсор находятся в области редактирования в соответствии с данными положения текущего курсора и записанными данными положения предшествующего курсора, полученные вторым модулем получения 302, и данными области редактирования, полученными первым модулем 301, отправлять блоку генерации первые данные для генерации линейного сегмента между текущим курсором и предшествующим курсором. Здесь блок генерации выполнен с возможностью генерировать линейный сегмент между текущим курсором и предшествующим курсором в соответствии с первыми данными.
Модуль генерации 303 может дополнительно включать блок расчета. Блок определения может быть выполнен так, чтобы при определении того, что текущий курсор или предшествующий курсор находится в области редактирования, а другой из них находится вне зоны редактирования, отправлять блоку расчета вторые данные для расчета точки пересечения между линейным сегментом, формируемым предшествующим курсором и текущим курсором, и одной из границ области редактирования. Здесь блок расчета выполнен с возможностью рассчитывать точку пересечения между линейным сегментом, формируемым предшествующим курсором и текущим курсором, и одной из границ области редактирования в соответствии со вторыми данными. В этом случае блок генерации выполнен с дополнительной возможностью генерировать линейный сегмент между точкой пересечения, рассчитанной блоком расчета, и курсором, находящимся в области редактирования и соответствующим точке пересечения.
Согласно еще одному из вариантов осуществления настоящего изобретения, второй модуль получения 302 выполнен с возможностью получать и записывать данные положения начального курсора, которые включают по крайней мере координаты, когда получено начальное уведомление, и получать данные положения текущего курсора в реальном времени до получения конечного уведомления. Здесь модуль генерации 303 имеет возможность генерировать линейный сегмент в соответствии с данными положения текущего курсора, записанными данными положения предшествующего курсора и данными области редактирования, а также обновлять записанные данные положения их заменой на данные положения текущего курсора.
При этом первый модуль получения 301 в частном случае включает: первый блок получения, имеющий возможность получать координаты двух диагональных точек любой из пар диагональных точек области редактирования; и второй блок получения, имеющий возможность получать интервал значений абсцисс и интервал значений ординат области редактирования в соответствии с координатами двух диагональных точек.
При этом модуль генерации 303 в частном случае включает: первый блок определения, имеющий возможность определять взаимное положение между начальным курсором и областью редактирования в соответствии с координатами начального курсора и данными области редактирования; второй блок определения, имеющий возможность определять взаимное положение между текущим курсором и областью редактирования в соответствии с координатами текущего курсора и данными области редактирования; первый блок генерации, имеющий возможность генерировать линейный сегмент между записанным курсором и текущим курсором, если определено, что взаимное положение между текущим курсором и областью редактирования и взаимное положение между записанным курсором и областью редактирования являются такими, что как текущий курсор, так и записанный курсор находятся в области редактирования; первый блок расчета, имеющий возможность определять линейное уравнение каждой из границ, входящих в область редактирования, в соответствии с данными области редактирования, если определено, что взаимное положение между текущим курсором и областью редактирования отлично от взаимного положения между записанным курсором и областью редактирования; третий блок получения, имеющий возможность получать точку пересечения между линейным сегментом, сформированным записанным курсором и текущим курсором, и каждой из границ области редактирования в соответствии с координатами текущего курсора, координатами записанного курсора и линейным уравнением каждой из границ; второй блок генерации, имеющий возможность генерировать линейный сегмент между точкой пересечения и записанным курсором, если определено, что взаимное положение между текущим курсором и областью редактирования и взаимное положение между записанным курсором и областью редактирования являются такими, что текущий курсор находится вне области редактирования, а записанный курсор находится в области редактирования; третий блок генерации, имеющий возможность генерировать линейный сегмент между точкой пересечения и текущим курсором, если определено, что взаимное положение между текущим курсором и областью редактирования и взаимное положение между записанным курсором и областью редактирования являются такими, что текущий курсор находится в области редактирования, а записанный курсор находится вне области редактирования; и первый блок обновления, имеющий возможность обновлять записанные данные положения их заменой на данные положения текущего курсора.
При этом третий блок получения в частном случае включает: первый подблок получения, имеющий возможность определять линейное уравнение сформированного линейного сегмента в соответствии с координатами текущего курсора и координатами записанного курсора; второй подблок получения, имеющий возможность объединять линейное уравнение сформированного линейного сегмента и линейное уравнение каждой из границ в системы уравнений и решать каждую из систем уравнений для получения координат точки пересечения между прямой линией, на которой лежит сформированный линейный сегмент, и прямой линий, на которой лежит каждая из границ; и подблок выбора, имеющий возможность выбирать точку пересечения, которая лежит на сформированном линейном сегменте, в соответствии с координатами записанного курсора, координатами текущего курсора и координатами каждой из точек пересечения, где выбранной точкой пересечения является точка пересечения, в которой сформированный линейный сегмент пересекает одну из границ области редактирования.
Согласно еще одному варианту осуществления настоящего изобретения, данные положения начального курсора дополнительно содержат данные относительного положения между начальным курсором и областью редактирования. Соответственно, второй модуль получения 302 включает: первый блок получения, имеющий возможность получать координаты начального курсора; третий блок определения, имеющий возможность определять, попадают ли значения абсциссы и ординаты начального курсора в интервал значений абсцисс и интервал значений ординат, соответственно, причем, если ответом является «да», то определять, что взаимное положение между начальным курсором и областью редактирования является таким, что начальный курсор находится в области редактирования, в противном случае, если ответом является «нет», то определять, что взаимное положение между начальным курсором и областью редактирования является таким, что начальный курсор находится вне области редактирования; и блок записи, имеющий возможность записывать данные положения.
Данные положения текущего курсора могут дополнительно содержать данные относительного положения между текущим курсором и областью редактирования. Соответственно, второй модуль получения 302 дополнительно включает: второй блок получения, имеющий возможность получать координаты текущего курсора в реальном времени; и четвертый блок определения, имеющий возможность определять, попадают ли значения абсциссы и ординаты текущего курсора в интервал значений абсцисс и интервал значений ординат, соответственно, причем, если ответом является «да», определять, что взаимное положение между текущим курсором и областью редактирования является таким, что текущий курсор находится в области редактирования, в противном случае, если ответом является «нет», то определять, что взаимное положение между текущим курсором и областью редактирования является таким, что текущий курсор находится вне области редактирования.
При этом модуль генерации 303 в частном случае включает: четвертый блок генерации, имеющий возможность генерировать линейный сегмент между записанным курсором и текущим курсором, если определено, что взаимное положение между текущим курсором и областью редактирования и взаимное положение между записанным курсором и областью редактирования являются такими, что как текущий курсор, так и записанный курсор находятся в области редактирования; четвертый блок получения, имеющий возможность получать точку пересечения между линейным сегментом, сформированным записанным курсором и текущим курсором, и каждой из границ области редактирования в соответствии с координатами текущего курсора, координатами записанного курсора и линейным уравнением каждой из границ, когда взаимное положение между текущим курсором и областью редактирования отлично от взаимного положения между записанным курсором и областью редактирования; пятый блок генерации, имеющий возможность генерировать линейный сегмент между точкой пересечения и записанным курсором, если определено, что взаимное положение между текущим курсором и областью редактирования и взаимное положение между записанным курсором и областью редактирования являются такими, что текущий курсор находится вне области редактирования, а записанный курсор находится в области редактирования, соответственно; шестой блок генерации, имеющий возможность генерировать линейный сегмент между точкой пересечения и текущим курсором, если определено, что взаимное положение между текущим курсором и областью редактирования и взаимное положение между записанным курсором и областью редактирования являются такими, что текущий курсор находится в области редактирования, а записанный курсор находится вне области редактирования, соответственно; и второй блок обновления, имеющий возможность обновлять записанные данные положения их заменой на данные положения текущего курсора.
Здесь устройство для обработки изображения выполняет функцию редактирования средства диалогового обмена сообщениями.
В соответствии с вышеописанными вариантами осуществления настоящего изобретения, данные положения текущего курсора получают в реальном времени, и линейный сегмент генерируют в реальном времени, при этом линейный сегмент, сгенерированный между текущим курсором и предшествующим курсором, главным образом является таким же, как действительная траектория перемещения курсора (т.е. нарисованная линия является по существу такой же, как траектория перемещения курсора). Поэтому пользователь может редактировать кривую в пределах области редактирования с помощью простых действий. Это повышает эффективность работы пользователя и тем самым улучшает практичность средства диалогового обмена сообщениями.
Все содержание или его часть в технических решениях в соответствии с вышеописанными вариантами осуществления настоящего изобретения может быть воплощено на практике с помощью программного обеспечения. Такое программное обеспечение может храниться на машиночитаемом носителе типа жесткого диска, компакт-диска (CD) или дискеты для компьютера.
То что было описано выше, является только описанием предпочтительных вариантов осуществления настоящего изобретения, которые не предназначены для целей ограничения правовой охраны настоящего изобретения. Соответственно, все модификации, эквивалентные замены или улучшения, которые основаны на сущности и существенных признаках настоящего изобретения, также будут попадать в область правовой охраны настоящего изобретения.