Mã được thêm vào Github để cho bạn hiểu vấn đề thực sự.Làm cách nào để hợp nhất hai UIImages trong khi vẫn giữ tỷ lệ cỡ ảnh?
Đây là hệ thống phân cấp:
-- ViewController.View P [width: 375, height: 667]
---- UIImageView A [width: 375, height: 667] Name: imgBackground
[A is holding an image of size(1287,1662)]
---- UIImageView B [width: 100, height: 100] Name: imgForeground
[B is holding an image of size(2400,982)]
Tôi cố gắng để kết hợp A với B nhưng kết quả được kéo dài.
Đây là mã hợp nhất:
func mixImagesWith(frontImage:UIImage?, backgroundImage: UIImage?, atPoint point:CGPoint, ofSize signatureSize:CGSize) -> UIImage {
let size = self.imgBackground.frame.size
UIGraphicsBeginImageContextWithOptions(size, false, UIScreen.main.scale)
backgroundImage?.draw(in: CGRect.init(x: 0, y: 0, width: size.width, height: size.height))
frontImage?.draw(in: CGRect.init(x: point.x, y: point.y, width: signatureSize.width, height: signatureSize.height))
let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return newImage
}
Lưu ý:
- .contentMode = .scaleAspectFit
- công trình Mã nhưng kết quả được kéo dài.
- Xem dòng này bằng mã,
let size = self.imgBackground.frame.size
- Tôi cần thay đổi điều này để khắc phục sự cố. Find the origin of subview with respect to UIImage size
Dưới đây là ảnh chụp màn hình để hiểu được vấn đề:
Tôi nên làm gì để có được kết quả đúng chức năng merge?
Hi Michael, cảm ơn vì câu trả lời của bạn. Có một vấn đề nhỏ với điều này. Vì hai hình ảnh có kích thước khác nhau. Sau khi hợp nhất, có sự khác biệt đáng chú ý về các thay đổi xuất xứ đối với 'UIImage B'. Tôi nên làm gì để có được nguồn gốc chính xác đối với kích thước hình ảnh ban đầu (tức là 'UIImage A')? – Hemang
@Hemang Tôi đã thử nghiệm trên các trình giả lập khác nhau và tôi không thấy bất kỳ thay đổi xuất xứ nào sau khi hợp nhất bằng cách sử dụng mã nguồn bạn đã cung cấp. Bạn có thể đặt câu hỏi riêng? – mixel
Cảm ơn, Michael, đây là [câu hỏi mới] (http://stackoverflow.com/questions/44095532/how-to-merge-two-uiimages-while-keeping-their-position-size-and-aspect-ratios) . – Hemang