Форум программистов, компьютерный форум, киберфорум
Наши страницы

Swift

Войти
Регистрация
Восстановить пароль
 
Slava-hacker32
7 / 7 / 0
Регистрация: 16.11.2011
Сообщений: 251
#1

Рисование на изображении и сохранение оригинального размера - Swift

20.12.2017, 18:47. Просмотров 221. Ответов 0
Метки нет (Все метки)

Всем привет. Подскажите пожалуйста. Столкнулся с необходимостью рисовать на изображении (простые линии), после чего сохранить все это художество в файл. Так вот, проблема в том, что я или не могу сохранить изображение в нормальном размере (картинка получается с размерами экрана) или же, если устанавливаю другие значения для размера contect'a то рисовалка ломается. Линии и точки рисуются с большим смещением, примерно раза в два. Да и сами линии смотрятся сплющенными. Но, при этом, в файле все отображается как нужно. Подскажите как это исправить. Пытался умножать координаты точек на значение scale, но особого результата это не дало.

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    self.swiped = false
    if let touch = touches.first {
 
 
        lastPoint = touch.location(in: self.view)
 
        print(lastPoint)
 
    }
}
 
func drawLineFrom(fromPoint: CGPoint, toPoint: CGPoint) {
 
 
    let scale = UIScreen.main.scale
 
    UIGraphicsBeginImageContextWithOptions((tempImageView.image?.size)!, false, scale)
 
  let context = UIGraphicsGetCurrentContext()
 
    tempImageView.image?.draw(in: CGRect(origin: CGPoint.zero, size: (tempImageView.image?.size)!))
 
    //let context = UIGraphicsGetCurrentContext()
 
    print("context size = \(context)")
    print("fromPoint = \(fromPoint), toPoint = \(toPoint)")
    context?.move(to: CGPoint(x: fromPoint.x, y:fromPoint.y))
    context?.addLine(to: CGPoint(x: toPoint.x, y:toPoint.y))
 
    context?.setBlendMode(CGBlendMode.normal)
    context?.setLineCap(CGLineCap.round)
    context?.setLineWidth(5)
    context?.setStrokeColor(UIColor(red: 0, green: 0, blue: 0, alpha: 1).cgColor)
    context?.strokePath()
 
    tempImageView.image = UIGraphicsGetImageFromCurrentImageContext()
    self.newImage = UIImagePNGRepresentation(UIGraphicsGetImageFromCurrentImageContext()!)
    UIGraphicsEndImageContext()
 
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
 
    swiped = true
    if let touch = touches.first {
        let currentPoint = touch.location(in: self.view)
        drawLineFrom(fromPoint: lastPoint, toPoint: currentPoint)
 
        lastPoint = currentPoint
        print(lastPoint)
 
    }
}
 
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
    if !swiped {
        drawLineFrom(fromPoint: lastPoint, toPoint: lastPoint)
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2017, 18:47
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Рисование на изображении и сохранение оригинального размера (Swift):

Рисование пикселя на изображении - PHP
Нужно нарисовать пиксель на изображении. Но рисуется не правильно, в изображение почему-то добавляются случайно полупрозрачные пиксели. Что...

Сохранение оригинального название файла, после загрузки файла на сервер - PHP
Есть код, который загружает файл в папку if($_FILES){ if(isset($_FILES)){ $testName = $_FILES; } else{ ...

Рисование на изображении, Кнопка загрузки изображения с компа - JavaScript
Уважаемые программисты. Два вопроса: 1 - У меня есть изображение, как сделать чтоб поверх него появились вертикальные линии от верхнего...

Изменение размера изображении на PHP - PHP
Доброго вечера всем. Задачка такая. При выкладывании фото пользователем чтобы на сервер фото пришел он размером 200*200. Очень много...

Вычисление реального размера объекта на изображении - Delphi
Всем привет. Задачка такая: Есть объекты на изображении (круг, квадрат, прямоугольник - неважно) и есть эталон у которого мы знаем...

Рисование в Panel - Сохранение рисунка - C#
Как реализовать сохранение нарисованного в Panel. Вроде сделал простенькую рисовалку (которая рисует эллипсами) с 3 функциями (менять...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2017, 18:47
Привет! Вот еще темы с ответами:

Рисование на php и сохранение в файл - PHP
Здравствуйте! В сети много примеров по рисованию на php но все сводятся к тому, что мы создаем php-файл с заголовком image/jpg(png) и...

Рисование на picturebox и сохранение в файл - Visual Basic .NET
Добрый день, visual basic 2008 задача: рисовать но нажатию клавиши мышки, и иметь возможность сохранить это все в файл (jpg/bmp). ...

Рисование в PictureBox и сохранение рисунка - C#
Создается простой графический редактор на C#. Проблема следующая: в PictureBox загружается рисунок из файла. Пользователь рисует в...

Рисование в боаузере и сохранение на сервере рисунка - PHP
Как сделать похожий сервис? http://printio.ru/tees/new Где можно почитать про эти технологии?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru