Я думаю, что у меня может быть странная просьба, однако, надеюсь, кто -то сможет помочь. Я использую хорошо известный uiscrollview + uiimageview для масштабирования на изображение и из них, а также PAN. Это работает нормально и денди, но текущий проект, который мы имеем, должны иметь возможность обрезать изображение, но также включать черные столбцы по бокам, если изображение меньше прямоугольника, чем прямоугольник. Смотрите изображения ниже. ).
< /p>
Это отлично подходит для Изображения, которые полностью увеличены (белый - это просто дополнительное пространство Uiimageview).
< /p>
Однако проблема возникает, когда мы пытаемся увеличить изображение и захватить только эту часть, плюс пустое пространство.
< /p>
Это приводит к следующему изображению
Проблема, которую мы видим Уметь создать изображение, которое именно то, что находится в прямом направлении, независимо от того, есть ли там часть изображения или нет. Другая проблема заключается в том, что мы хотим иметь возможность динамически изменить выходное разрешение. Соотношение сторон составляет 16: 9, и для этого примера kmaxwidth = 1136 и kmaxheight = 639 , однако в будущем мы можем запросить большее или меньшее разрешение 16: 9.
Ниже приведена функция, которую я имею до сих пор: < /p>
- (UIImage *)createCroppedImageFromImage:(UIImage *)image {
CGSize newRect = CGSizeMake(kMaxWidth, kMaxHeight);
UIGraphicsBeginImageContextWithOptions(newRect, YES, 0.0);
// 0 is the edge of the screen, to help with zooming
CGFloat xDisplacement = ((abs(0 - imageView.frame.origin.x) * kMaxWidth) / (self.cropSize.width / self.scrollView.zoomScale) / self.scrollView.zoomScale);
CGFloat yDisplacement = ((abs(self.cropImageView.frame.origin.y - imageView.frame.origin.y) * kMaxHeight) / (self.cropSize.height / self.scrollView.zoomScale) / self.scrollView.zoomScale);
CGFloat newImageWidth = (self.image.size.width * kMaxWidth) / (self.cropSize.width / self.scrollView.zoomScale);
CGFloat newImageHeight = (self.image.size.height * kMaxHeight) / (self.cropSize.height / self.scrollView.zoomScale);
[image drawInRect:CGRectMake(xDisplacement, 0, newImageWidth, newImageHeight)];
UIImage *croppedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return croppedImage;
}
< /code>
Любая помощь будет очень оценена. < /p>
Подробнее здесь: https://stackoverflow.com/questions/191 ... mage-parts
Обрезать часть UIIMAGE из более крупного UIIMAGE и включать в себя не изображения деталей ⇐ IOS
Программируем под IOS
1738095730
Anonymous
Я думаю, что у меня может быть странная просьба, однако, надеюсь, кто -то сможет помочь. Я использую хорошо известный uiscrollview + uiimageview для масштабирования на изображение и из них, а также PAN. Это работает нормально и денди, но текущий проект, который мы имеем, должны иметь возможность обрезать изображение, но также включать черные столбцы по бокам, если изображение меньше прямоугольника, чем прямоугольник. Смотрите изображения ниже. ).
< /p>
Это отлично подходит для Изображения, которые полностью увеличены (белый - это просто дополнительное пространство Uiimageview).
< /p>
Однако проблема возникает, когда мы пытаемся увеличить изображение и захватить только эту часть, плюс пустое пространство.
< /p>
Это приводит к следующему изображению
Проблема, которую мы видим Уметь создать изображение, которое именно то, что находится в прямом направлении, независимо от того, есть ли там часть изображения или нет. Другая проблема заключается в том, что мы хотим иметь возможность динамически изменить выходное разрешение. Соотношение сторон составляет 16: 9, и для этого примера kmaxwidth = 1136 и kmaxheight = 639 , однако в будущем мы можем запросить большее или меньшее разрешение 16: 9.
Ниже приведена функция, которую я имею до сих пор: < /p>
- (UIImage *)createCroppedImageFromImage:(UIImage *)image {
CGSize newRect = CGSizeMake(kMaxWidth, kMaxHeight);
UIGraphicsBeginImageContextWithOptions(newRect, YES, 0.0);
// 0 is the edge of the screen, to help with zooming
CGFloat xDisplacement = ((abs(0 - imageView.frame.origin.x) * kMaxWidth) / (self.cropSize.width / self.scrollView.zoomScale) / self.scrollView.zoomScale);
CGFloat yDisplacement = ((abs(self.cropImageView.frame.origin.y - imageView.frame.origin.y) * kMaxHeight) / (self.cropSize.height / self.scrollView.zoomScale) / self.scrollView.zoomScale);
CGFloat newImageWidth = (self.image.size.width * kMaxWidth) / (self.cropSize.width / self.scrollView.zoomScale);
CGFloat newImageHeight = (self.image.size.height * kMaxHeight) / (self.cropSize.height / self.scrollView.zoomScale);
[image drawInRect:CGRectMake(xDisplacement, 0, newImageWidth, newImageHeight)];
UIImage *croppedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return croppedImage;
}
< /code>
Любая помощь будет очень оценена. < /p>
Подробнее здесь: [url]https://stackoverflow.com/questions/19187222/crop-a-portion-of-uiimage-from-larger-uiimage-and-include-non-image-parts[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия