teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

変数名の誤りなどの雑なコードを修正しました。申し訳ありません。

2016/03/17 03:00

投稿

compotaYAMADA
compotaYAMADA

スコア7

title CHANGED
File without changes
body CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  ```swift
7
7
  //インスタンス変数
8
- var myImageView = UIIMageView()
8
+ var myImageView = UIImageView()
9
9
 
10
10
  //xcode内に用意した.jpgファイルをimageViewとして表示。同時にimageViewにtapGestureを付与しました。
11
11
  override func viewDidLoad() {
@@ -18,19 +18,22 @@
18
18
  myImageView.frame.size = image!.size
19
19
 
20
20
  myImageView.userInteractionEnabled = true
21
- myImage.addGestureRecognizer(UITapGestureRecognizer(target: self, action: "tapAction:"))
21
+ myImageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: "tapAction:"))
22
+
23
+ self.view.addSubview(myImageView)
22
24
  }
23
25
 
24
26
  //imageViewのタップ時にタップした座標のRGB値を表示する
25
27
  func tapAction(sender:UITapGestureRecognizer){
26
28
  //タップした座標の取得
27
- let tapPoint = sender.locationInView(self.myImageView)
29
+ let tapPoint = sender.locationInView(self.myImageView)
28
- //imageをdata化
30
+ //imageをdata化
29
- let pixelData = CGDataProviderCopyData(CGImageGetDataProvider(myUIImage.CGImage))
31
+ let pixelData = CGDataProviderCopyData(CGImageGetDataProvider(myImageView.image!.CGImage))
30
- let data: UnsafePointer = CFDataGetBytePtr(pixelData)
32
+ let data: UnsafePointer = CFDataGetBytePtr(pixelData)
31
33
 
32
34
  //タップした位置の座標にあたるアドレスを算出
33
- let pixelAd: Int = ((Int(myUIImage.size.width) * Int(tapPoint.y)) + Int(tapPoint.x)) * 4
35
+ let pixelAd: Int = ((Int(myImageView.image!.size.width) * Int(tapPoint.y)) + Int(tapPoint.x)) * 4
36
+
34
37
  //それぞれRGBAの値をとる
35
38
  let r = CGFloat(Int( CGFloat(data[pixelAd])/CGFloat(255.0)*100)) / 100
36
39
  let g = CGFloat(Int( CGFloat(data[pixelAd+1])/CGFloat(255.0)*100)) / 100
@@ -46,18 +49,18 @@
46
49
 
47
50
  ```swift
48
51
  //モノクロのフィルターを指定
49
- let filter = CIFilter(name: "CIColorMonochrome")
52
+ let myFilter = CIFilter(name: "CIColorMonochrome")
50
- filter!.setValue(CIImage(image: testImage.image!), forKey: kCIInputImageKey)
53
+ myFilter!.setValue(CIImage(image: myImageView.image!), forKey: kCIInputImageKey)
51
- //値の調整.
54
+ //値の調整.
52
- filter!.setValue(CIColor(red: 0.5, green: 0.5, blue: 0.5), forKey: kCIInputColorKey)
55
+ myFilter!.setValue(CIColor(red: 0.5, green: 0.5, blue: 0.5), forKey: kCIInputColorKey)
53
- filter!.setValue(1.0, forKey: kCIInputIntensityKey)
56
+ myFilter!.setValue(1.0, forKey: kCIInputIntensityKey)
54
- // フィルターを通した画像をアウトプット.
57
+ // フィルターを通した画像をアウトプット.
55
- let myOutputImage : CIImage = myMonochromeFilter!.outputImage!
58
+ let myOutputImage : CIImage = myFilter!.outputImage!
56
- let context = CIContext(options: nil)
59
+ let context = CIContext(options: nil)
57
- let cgImage = context.createCGImage(myOutputImage, fromRect: myOutputImage.extent)
60
+ let cgImage = context.createCGImage(myOutputImage, fromRect: myOutputImage.extent)
58
- let newImage = UIImage(CGImage: cgImage)
61
+ let newImage = UIImage(CGImage: cgImage)
59
- // 再びUIViewにセット.
62
+ // 再びUIViewにセット.
60
- self.testImage.image = newImage
63
+ self.myImageView.image = newImage
61
64
  ```
62
65
  このようにして上記と同様にtapActionを行っても、タップしたポイントとは異なるポイントのRGB値を表示します。
63
66
  フィルターをかけたimageのタップした座標の正しいRGB値の取り方をご教授いただければと思います。
@@ -67,4 +70,6 @@
67
70
  このようなこともあり混乱しています。
68
71
 
69
72
  どなたかお知恵を拝借できれば幸いです。
70
- 長文失礼しました。
73
+ 長文失礼しました。
74
+
75
+ 雑なコードで申し訳ございませんでした。修正しました。