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

回答編集履歴

2

改行。

2016/03/17 05:06

投稿

fuzzball
fuzzball

スコア16735

answer CHANGED
@@ -1,5 +1,4 @@
1
- 今回のケースは、**画像の横サイズ**と**データの横サイズ**が一致しないために起こっている現象だと思われます。
1
+ 今回のケースは、**画像の横サイズ**と**データの横サイズ**が一致しないために起こっている現象だと思われます。(1000x1000のときは両者が一致しているので問題にならない)
2
- (1000x1000のときは両者が一致しているので問題にならない)
3
2
 
4
3
  ```swift
5
4
  //1ピクセルのバイト数

1

ちこっと。

2016/03/17 05:06

投稿

fuzzball
fuzzball

スコア16735

answer CHANGED
@@ -1,18 +1,16 @@
1
- 今回のケースは、**画像の横サイズ**と**データの横サイズ**が一致しないために起こっている現象です。
1
+ 今回のケースは、**画像の横サイズ**と**データの横サイズ**が一致しないために起こっている現象だと思われます。
2
- (データの横サイズがキリのいい数字に切り上げられるというのはよくある話です)
2
+ (1000x1000のときは両者が一致しているので問題にならない)
3
3
 
4
- ついでに、1ピクセルのサイズもキチンと取得するようにしてみました。
5
-
6
4
  ```swift
7
5
  //1ピクセルのバイト数
8
6
  let bytesPerPixel = CGImageGetBitsPerPixel(myImageView.image!.CGImage) / 8
9
7
  //1ラインのバイト数
10
8
  let bytesPerRow = CGImageGetBytesPerRow(myImageView.image!.CGImage)
11
- print(bytesPerPixel)
9
+ print("bytesPerPixel=\(bytesPerPixel) bytesPerRow=\(bytesPerRow)")
12
- print(bytesPerRow)
13
10
 
14
11
  //タップした位置の座標にあたるアドレスを算出
15
12
  let pixelAd: Int = Int(tapPoint.y) * bytesPerRow + Int(tapPoint.x) * bytesPerPixel
16
13
  ```
17
14
 
18
- これで試してみて下さい。
15
+ ついでに、1ピクセルのサイズもキチンと取得するようにしてみました。
16
+ 375x667のときはフィルタの有無でbytesPerRowが違っているはずです。