标签: cgimage

修剪UIImage边框

这是我想修剪的图像的一个例子.我想摆脱图像周围的边框(在这种情况下是顶部和底部黑条).

UIImage修剪

我在Github上找到了一个库:CKImageAdditions,但它似乎不起作用.当我传入UIColor(RGB颜色)时,它只返回相同的图像.

我可以找到许多示例和类别类来修剪UIImage,任何透明像素作为边框,但在这种情况下我需要修剪黑色.我已经对我的图像中的颜色进行了采样,它们的颜色值确实是255,但它似乎与上面的库所寻找的不匹配.

有没有人有他们使用的图书馆或任何见解?我搜索和搜索了CKImageAdditions,这是我唯一可以找到广告用颜色修剪的东西(虽然不幸的是在我的情况下不起作用).

c objective-c uiimage cgimage ios

5
推荐指数
1
解决办法
1378
查看次数

如何向 CIImage 添加文本?

我正在使用照片框架,并创建了一个将滤镜应用于图像的应用程序。现在,我不想应用过滤器,而是想在图像顶部添加文本。这个 API 为我提供了一个CIImage可以用来创建输出的 API CIImage。我只是不知道如何将特定位置的文本添加到CIImage. CGImage如果我是正确的,由于性能下降,不建议将其转换为 a然后添加文本。

如何使用现有的CIImage输出完全相同的内容CIImage(保留原始图像质量)并将文本置于特定位置的顶部?

//Get full image
let url = contentEditingInput.fullSizeImageURL
let orientation = contentEditingInput.fullSizeImageOrientation
var inputImage = CIImage(contentsOfURL: url)
inputImage = inputImage.imageByApplyingOrientation(orientation)

//TODO: REPLACE WITH TEXT OVERLAY
/*//Add filter
let filterName = "CISepiaTone"
let filter = CIFilter(name: filterName)
filter.setDefaults()
filter.setValue(inputImage, forKey: kCIInputImageKey)
let outputImage: CIImage = filter.outputImage*/

//Create editing output
let jpegData: NSData = self.jpegRepresentationOfImage(outputImage)
let adjustmentData = PHAdjustmentData(formatIdentifier: AdjustmentFormatIdentifier, formatVersion: "1.0", data: filterName.dataUsingEncoding(NSUTF8StringEncoding))

let …
Run Code Online (Sandbox Code Playgroud)

core-image cgimage ios ciimage swift

5
推荐指数
1
解决办法
3173
查看次数

将CIImage转换为CGImage太慢了

我需要将a转换CIImage为a CGImage.这是我目前使用的代码:

CGImageRef img = [myContext createCGImage:ciImage fromRect:[ciImage extent]];
Run Code Online (Sandbox Code Playgroud)

但是对于具有常规尺寸的图像,他的代码行非常慢.很慢,我可以正确使用它.是否有另一种来将这些转换更快的方法CIImagesCGImages

最后我Core Graphics用来画CGImages一个CGContext.如果有一种方法可以直接绘制CIImagesCGContext我认为也应该更快.这可能吗?

谢谢

xcode core-graphics cgimage ios ciimage

5
推荐指数
1
解决办法
5749
查看次数

在没有内存峰值的情况下旋转UIImage

我目前正在使用旋转图像CGContextDrawImage,但无论何时调用它都会有一个巨大的内存峰值.较新的设备可以处理它,但是具有较低内存的设备(例如iPhone 4s)则不能.该图像是用户在的大文件AVCaptureSessionPresetHigh

我正在使用此扩展名来旋转图像 UIImage

func rotate(orientation: UIImageOrientation) -> UIImage{
    if(orientation == UIImageOrientation.Up){return self}

    var transform: CGAffineTransform = CGAffineTransformIdentity

    if(orientation == UIImageOrientation.Down || orientation == UIImageOrientation.DownMirrored){
        transform = CGAffineTransformTranslate(transform, self.size.width, self.size.height)
        transform = CGAffineTransformRotate(transform, CGFloat(M_PI))
    }
    else if(orientation == UIImageOrientation.Left || orientation == UIImageOrientation.LeftMirrored){
        transform = CGAffineTransformTranslate(transform, self.size.width, 0)
        transform = CGAffineTransformRotate(transform, CGFloat(M_PI_2))
    }
    else if(orientation == UIImageOrientation.Right || orientation == UIImageOrientation.RightMirrored){
        transform = CGAffineTransformTranslate(transform, 0, self.size.height)
        transform = CGAffineTransformRotate(transform,  CGFloat(-M_PI_2))
    }


    if(orientation == UIImageOrientation.UpMirrored || orientation == …
Run Code Online (Sandbox Code Playgroud)

iphone uiimage cgimage ios swift

5
推荐指数
1
解决办法
522
查看次数

swift - CGImage 到 CVPixelBuffer

如何快速将 a 转换CGImage为 a CVPixelBuffer

我知道有很多问题试图做相反的事情,还有一些客观的 C 答案,比如这个,但我无法让它们迅速工作。这是我最接近的:

func pixelBufferFromCGImage(image: CGImage) -> CVPixelBuffer {
    var pxbuffer: CVPixelBuffer? = nil
    let options: NSDictionary = [:]

    let width =  image.width
    let height = image.height
    let bytesPerRow = image.bytesPerRow

    let dataFromImageDataProvider = image.dataProvider!.data
    let x = CFDataGetBytePtr(dataFromImageDataProvider)

    CVPixelBufferCreateWithBytes(
        kCFAllocatorDefault,
        width,
        height,
        kCVPixelFormatType_32ARGB,
        CFDataGetBytePtr(dataFromImageDataProvider),
        bytesPerRow,
        nil,
        nil,
        options,
        &pxbuffer
    )
    return pxbuffer!;
}
Run Code Online (Sandbox Code Playgroud)

(这不会编译,因为CVPixelBufferCreateWithBytesUnsafeMutablePointer 除外,并且CFDataGetBytePtr(dataFromImageDataProvider)UnsafePointer<UIint8>!

cgimage swift cvpixelbuffer

5
推荐指数
1
解决办法
3515
查看次数

UIImage 转换为 CGImage 时大小增加了一倍?

我试图通过cropping(to:)a 上的方法裁剪用 iPhone 相机拍摄的图像的一部分CGImage,但我遇到了一个奇怪的现象,在UIImage转换时我的尺寸加倍.cgImage,这显然阻止了我做我想做的事情。

流程是:

  1. 用相机拍摄图片并进入全屏 imageContainerView
  2. 此 imageContainerView 的“屏幕截图”是使用 UIView 扩展制作的,可有效地将图像大小调整为容器的尺寸
  3. imageContainerView.image现在设置为“屏幕截图”

let croppedImage = imageContainerView.renderToImage()
imageContainerView.image = croppedImage
print(imageContainerView.image!.size) //yields (320.0, 568.0)
print(imageContainerView.image!.cgImage!.width, imageContainerView.image!.cgImage!.height) //yields (640, 1136) ??

extension UIView {

    func renderToImage(afterScreenUpdates: Bool = false) -> UIImage {

        let rendererFormat = UIGraphicsImageRendererFormat.default()
        rendererFormat.opaque = isOpaque
        let renderer = UIGraphicsImageRenderer(size: bounds.size, format: rendererFormat)

        let snapshotImage = renderer.image { _ in
            drawHierarchy(in: bounds, afterScreenUpdates: afterScreenUpdates)
        }
        return snapshotImage
    } …
Run Code Online (Sandbox Code Playgroud)

uikit cgimage ios swift

5
推荐指数
1
解决办法
690
查看次数

检查 UIImage 的子部分是亮还是暗

我正在尝试覆盖一个 V 形按钮,该按钮将允许用户关闭当前视图。V 形的颜色在深色图像上应为浅色,在浅色图像上应为深色。我附上了我所描述内容的屏幕截图。

在此输入图像描述

然而,当尝试计算图像的亮度/暗度时,会对性能产生重大影响,我这样做(在`CGImage上操作):

var isDark: Bool {
    guard let imageData = dataProvider?.data else { return false }
    guard let ptr = CFDataGetBytePtr(imageData) else { return false }
    let length = CFDataGetLength(imageData)
    let threshold = Int(Double(width * height) * 0.45)
    var darkPixels = 0
    for i in stride(from: 0, to: length, by: 4) {
        let r = ptr[i]
        let g = ptr[i + 1]
        let b = ptr[i + 2]
        let luminance = (0.299 * Double(r) + 0.587 * …
Run Code Online (Sandbox Code Playgroud)

uiimage cgimage ios swift

5
推荐指数
1
解决办法
1411
查看次数

在调整视图大小之前,不会显示新的CALayer.contents

我有一个CALayer需要显示视频帧.每次渲染一个帧(作为a CGImageRef)时,都会调用此方法:

- (void)displayFrame:(CGImageRef)frame {
    [view layer].contents = (id)frame;
}
Run Code Online (Sandbox Code Playgroud)

奇怪的是,这首先不会显示任何东西.每次view调整大小时,frame都会显示一个新的,但直到view再次调整大小.

我该如何解决?

cocoa core-animation objective-c calayer cgimage

4
推荐指数
1
解决办法
2751
查看次数

从GraphicContext绘制图像时图像变得模糊?

我在故事板中创建了一个带有UIImageView的ViewController.ImageView设置为Aspect Fit并获得黄色背景颜色.

这是我用于测试的照片.

当我运行我的应用程序时,显示的图像如下所示:

在此输入图像描述

没有问题.图像看起来很清晰.现在我在我的viewDidLoad方法中做了以下事情:

  @IBOutlet weak var imageView: UIImageView!

  override func viewDidLoad() {
    super.viewDidLoad()

    UIGraphicsBeginImageContext(imageView.image!.size)
    imageView.image!.drawInRect(CGRectMake(0, 0, imageView.image!.size.width, imageView.image!.size.height))

    var drawedImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    imageView.image = drawedImage
  }
Run Code Online (Sandbox Code Playgroud)

结果如下:

在此输入图像描述

从图形上下文中绘制图像后,它看起来比以前更加模糊.

从图形上下文中回退时,如何防止图像变得模糊?

objective-c cgimage ios uigraphicscontext swift

4
推荐指数
1
解决办法
1493
查看次数

CGImageSource到CGImage?

我得到了以下访问PHAsset的代码.我需要传递一个CGImage:

let imageManager = PHImageManager.defaultManager()
imageManager.requestImageDataForAsset(self.asset!, options: nil, resultHandler:{
    (data, responseString, imageOriet, info) -> Void in
    let imageData: NSData = data!
    if let imageSource = CGImageSourceCreateWithData(imageData, nil) {
        let imageProperties = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, nil)! as NSDictionary

        //How do I create a CGImage now?

    }
})
Run Code Online (Sandbox Code Playgroud)

我需要提取一个CGImage.遇到麻烦......

xcode cgimage cgimagesource cgimageref swift

4
推荐指数
1
解决办法
1196
查看次数