CGBitmapContextCreate ошибка с быстрым

Все это хорошо, но seq предположительно устарел, и большинство из них работают только с числовыми диапазонами.

Если вы заключите цикл for в двойные кавычки, стартовые и конечные переменные будут разыменованы, когда вы будете эхо-строки , и вы можете отправить строку обратно в BASH для выполнения. $i должен быть экранирован, поэтому он НЕ оценивается перед отправкой на подоболочку.

RANGE_START=a
RANGE_END=z
echo -e "for i in {$RANGE_START..$RANGE_END}; do echo \\${i}; done" | bash

Этот вывод также может быть назначен переменной:

VAR=`echo -e "for i in {$RANGE_START..$RANGE_END}; do echo \\${i}; done" | bash`

Единственный «служебный» ресурс, который должен генерировать, должен быть вторым экземпляром bash, поэтому он должен быть подходящим для интенсивных операций.

29
задан David Berry 8 June 2014 в 18:41
поделиться

7 ответов

На всякий случай, если кто-то столкнется с той же проблемой. Фрагмент ниже, наконец, работает.

let colorSpace:CGColorSpace = CGColorSpaceCreateDeviceRGB()
let bitmapInfo = CGBitmapInfo(CGImageAlphaInfo.PremultipliedLast.rawValue)
let context = CGBitmapContextCreate(nil, UInt(rect.size.width), UInt(rect.size.height), 8, 0, colorSpace, bitmapInfo)

Он генерирует 32-битный контекст RGBA в быстром

60
ответ дан Robert 8 June 2014 в 18:41
поделиться

У меня были некоторые проблемы в Swift 1.2 с использованием UInt, сейчас я использую Int, и это работает. В этом примере показано, как преобразовать изображение в изображение в градациях серого.

    let imageRect = self.myImage.frame

    let colorSpace = CGColorSpaceCreateDeviceGray()
    let width = imageRect.width
    let height = imageRect.height

    let bitmapInfo = CGBitmapInfo(CGImageAlphaInfo.None.rawValue)
    let context = CGBitmapContextCreate(nil, Int(width), Int(height), 8, 0, colorSpace, bitmapInfo)
3
ответ дан Miralem Cebic 8 June 2014 в 18:41
поделиться

В Swift 2.1 можно получить доступ к полям должным образом и даже ИЛИ к ним вместе:

let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.PremultipliedFirst.rawValue | CGBitmapInfo.ByteOrder32Little.rawValue)

let context = CGBitmapContextCreate(baseAddress, width, height, 8,
                bytesPerRow, colorSpace, bitmapInfo.rawValue);

Весь процесс «rawValue» продолжается:)

Вам даже не нужно отделить bitmapInfo и сделать однострочную:

let context = CGBitmapContextCreate(baseAddress, width, height, 8,
                bytesPerRow, colorSpace, CGImageAlphaInfo.PremultipliedFirst.rawValue | CGBitmapInfo.ByteOrder32Little.rawValue
10
ответ дан Graham Perks 8 June 2014 в 18:41
поделиться

Обновлено для Swift 3:

    let colorSpace = CGColorSpaceCreateDeviceRGB()
    let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.premultipliedLast.rawValue)
    guard let context = CGContext.init(data: nil, width: Int(size.width), height: Int(size.height), bitsPerComponent: Int(bitsPerComponent), bytesPerRow: Int(bytesPerRow), space: colorSpace, bitmapInfo: UInt32(bitmapInfo.rawValue)) else {
        // cannot create context - handle error
    }
15
ответ дан Echelon 8 June 2014 в 18:41
поделиться

В Swift 2.2:

let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.PremultipliedLast.rawValue).rawValue
let colorSpace = CGColorSpaceCreateDeviceRGB()
let context = CGBitmapContextCreate(nil, Int(width), Int(height), 8, 0, colorSpace, bitmapInfo)
1
ответ дан Sam Soffes 8 June 2014 в 18:41
поделиться

CGBitmapInfo.AlphaInfoMask не является действительной информацией растрового изображения.

Попробуйте установить CGBitmapInfo.AlphaLast или CGBitmapInfo.AlphaFirst.

0
ответ дан Goz 8 June 2014 в 18:41
поделиться

Предлагаемый способ совместим с Xcode 8.3 и Xcode 9 , который поддерживает Swift 3 и Swift 4

let colorSpace = CGColorSpaceCreateDeviceRGB()
guard let bitmapContext = CGContext(data: nil, 
                                    width: Int(size.width),
                                    height: Int(size.height),
                                    bitsPerComponent: Int(bitsPerComponent),
                                    bytesPerRow: Int(bytesPerRow),
                                    space: colorSpace,
                                    bitmapInfo: CGImageAlphaInfo.premultipliedLast.rawValue) else {
                                  return nil
    }
3
ответ дан abdullahselek 8 June 2014 в 18:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: