私はカスタムカメラアプリケーションを開発中です。物事はうまくいっている。下からプログラムで画像を切り抜く
しかし、画像を一番下から切り取っているうちに問題が発生しました。すなわち切り取られた画像は元の画像と全く同じ幅を有するが、高さは元の画像の1/3であり、それは底部から開始しなければならない。
私はカスタムカメラアプリケーションを開発中です。物事はうまくいっている。下からプログラムで画像を切り抜く
しかし、画像を一番下から切り取っているうちに問題が発生しました。すなわち切り取られた画像は元の画像と全く同じ幅を有するが、高さは元の画像の1/3であり、それは底部から開始しなければならない。
スウィフト3溶液:RECTとトリミング用
func cropBottomImage(image: UIImage) -> UIImage {
let height = CGFloat(image.size.height/3)
let rect = CGRect(x: 0, y: image.size.height - height, width: image.size.width, height: height)
return cropImage(image: image, toRect: rect)
}
ヘルパーメソッド:
func cropImage(image:UIImage, toRect rect:CGRect) -> UIImage{
let imageRef:CGImage = image.cgImage!.cropping(to: rect)!
let croppedImage:UIImage = UIImage(cgImage:imageRef)
return croppedImage
}
方法:
func croppIngimage(ImageCrop:UIImage, toRect rect:CGRect) -> UIImage{
var imageRef:CGImageRef = CGImageCreateWithImageInRect(imageToCrop.CGImage, rect)
var croppedimage:UIImage = UIImage(CGImage:imageRef)
return croppedimage
}
コール:
var ImageCrop:UIImage = UIImage(named:"image.png")
これはほとんどAlexburtnikの答え
ですが、ちょうどUIImage.sizeは( "ポイント" で)論理的なサイズであることを言及する
しかし、CGImage.croppingは()(実際の寸法を使用しました
したがって、@ 2xまたは@ 3x修飾子を使用してイメージを使用すると、 クロッピングが実際に予想の半分または1/3になることがわかります。
import UIKit
extension UIImage {
func crop(to rect: CGRect) -> UIImage? {
// Modify the rect based on the scale of the image
var rect = rect
rect.size.width = rect.size.width * self.scale
rect.size.height = rect.size.height * self.scale
// Crop the image
guard let imageRef = self.cgImage?.cropping(to: rect) else {
return nil
}
return UIImage(cgImage: imageRef)
}
}
:UIImageの拡張として
func cropImage(image:UIImage, toRect rect:CGRect) -> UIImage? {
var rect = rect
rect.size.width = rect.width * image.scale
rect.size.height = rect.height * image.scale
guard let imageRef = image.cgImage?.cropping(to: rect) else {
return nil
}
let croppedImage = UIImage(cgImage:imageRef)
return croppedImage
}
:
ので、あなたはトリミングすると、次のように、第1の画像の「スケール」プロパティで矩形を掛ける検討することができます使用法:
let myImage = UIImage(named:"myImage.png")
let croppedRect = CGRect(x: 0, y: 0, width: newWidth, height: newHeight)
let croppedImage = myImage.crop(to: croppedRect)
私は2448×3264のイメージサイズがあるとします。その部分は赤です。 toRectパラメータは何ですか? – BornShell
参照:http://stackoverflow.com/questions/37946990/cgrectmake-cgpointmake-cgsizemake-cgrectzero-cgpointzero-is-unavailable-in –