質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

243閲覧

Swift 階調値の配列から、グレースケール画像を生成することは可能か?

maru.wk

総合スコア30

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/11/02 04:59

インターネットで検索しても、わからなかったため質問させていただきます。

ある画像の階調値の配列があったとして、その階調値を用いてグレースケール画像を出力することはswift単体で可能でしょうか?

もし可能であれば、参考URLなどを紹介していただけませんでしょうか?
聞きたいことだけの記載で申し訳ありませんが、宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

iOSの場合は知りません。
256階調とします。256=2の8乗です。

swift

1func createImage(_ grayScaleBytes: [UInt8], width: Int, height: Int) -> NSImage? { 2 3 let data = Data(bytes: grayScaleBytes) 4 var p: UnsafeMutablePointer<UInt8>? = UnsafeMutablePointer<UInt8>.allocate(capacity: data.count) 5 guard let pp = p else { return nil } 6 data.copyBytes(to: pp, count: data.count) 7 defer { pp.deallocate(capacity: data.count) } 8 9 return NSBitmapImageRep(bitmapDataPlanes: &p, 10 pixelsWide: width, 11 pixelsHigh: height , 12 bitsPerSample: 8, 13 samplesPerPixel: 1, 14 hasAlpha: false, 15 isPlanar: false, 16 colorSpaceName: NSColorSpaceName.deviceWhite, 17 bytesPerRow: width , 18 bitsPerPixel: 0) 19 .flatMap { $0.tiffRepresentation } 20 .flatMap { NSImage(data: $0) } 21}

投稿2017/11/02 15:44

MasakiHori

総合スコア3384

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maru.wk

2017/11/03 09:16

わざわざサンプルコードまでありがとうございました。
maru.wk

2017/11/05 03:06

すみません。NSColorSpaceNameのところ Use of unresolved identifier 'NSColorSpaceName'というエラーが発生してしまいました。NSColorでなんとかできないか試したのですが、String型でないといけないということでうまくいきませんでした。 申し訳ございませんが、どうすればよいか教えていただけませんでしょうか?
MasakiHori

2017/11/05 04:55

Swiftのバージョンが違うんじゃないですか? あなたがどのバージョンを使っているのか知りませんけど。
maru.wk

2017/11/05 09:49

すみません記載不足でした。Swiftは3.0を使用しています。
MasakiHori

2017/11/05 14:14

何を調べましたか? あなたはエラーを解消する努力をしていますか?
maru.wk

2017/11/06 01:42

app developerを見たところ、NSColorSpaceNameは使用できないということだったので、NSColorSpaceのリファレンスを読んで、なんとかString型にして代用できないかと思ったのですが、うまくいきませんでした。
maru.wk

2017/11/06 02:28

リファレンスを読み実行してみたところ、うまくいきました! URLまでありがとうございました。勉強になりました。
MasakiHori

2017/11/06 02:34

関数に 渡してあげるものは「NSDeviceWhiteColorSpace 」でOKです。 Appleはネット上には最新のリファレンスしか残さない会社であるということを覚悟しましょう。もうネット上ではSwift4のリファレンスしか見れません。 (ちょっと分けます)
MasakiHori

2017/11/06 02:42

検索に慣れていないようなので今回僕が検索した手順を書いておきます。 まず、欲しいのはSwift3.0での定数の名前です。どこで使われるのかはわかっています。NSBitmapImageRepのイニシャライザです。ただしイニシャライザが数種類あるので、最初の引数ラベルを含めて検索します。「NSBitmapImageRep(bitmapDataPlanes:」。 Appleのサイトが上に出ますが、これがダメなのはわかっているので上位にある「SwiftでフォントをNSImageに書き込む方法」に飛びました。フォントとか書いてますけど定数さえ分かればいいので気にしてはいけません。 とんだ先にサンプルがありました。このサンプルはNSDeviceRGBColorSpaceを使っています。明らかに必要なものではありません。しかし、同じ分類のものですから、これを検索するとリストが見つかると考えられます。「NSDeviceRGBColorSpace」で検索を掛けます。なんとAppleのサイトにまだ残っているようです。ここに飛びます。 Objective-C用ですがNSDeviceRGBColorSpace単体のリファレンスがありました。しかし欲しいのはリストです。上部黒バックのナビゲータで一つ上の階層を見てみます。「Color Space Names」をクリックします。 リストがありました。 ここからdeviceWhiteに近いをものを見つけて正しく動くか確認することができます。
MasakiHori

2017/11/06 02:46

もうひとつ。 先の検索の仕方ですが、英語の文章を「読む」必要は全くありませんでした。サンプルコードを探して芋ずる式に検索しただけで見つかっています。サンプルを探すだけなら英語を忌避する必要は全くないということも覚えておくといいです。
maru.wk

2017/11/08 05:03

わざわざ自分のために検索のやり方・ポイントまで解説していただき、本当にありがとうございます。 英語をGoogle翻訳でいちいち調べていたので、これからは教えていただいたような方法で検索していきたいと思います。 重ねてになりますが、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問