質問: **50x20** matrix(sample.tifに画像処理などを施し、Matrixサイズを変更した結果) 上記のコードでは、 ``` data, _ := ioutil.ReadFile(FName) //sample.tifを読みこむ img, _ := tiff.Decode(bytes.NewReader(data)) //tiffへのdecodeを行う im := img.(*image.RGBA) //RGBAであることを規定する ``` この部分で、ファイルのサイズが10x10に規定されてしまい、 結果として、im.Pixのサイズが固定されてしまいます。 このため、Imgが10x10の場合はOKですが、それ以外のサイズではNGになります。 自分が考えるには、このim.Pixのサイズを変更できればよいかと思いますが、 それが上記のコードでどの部分を改変するのかがわかりません。 もしお分かりでしたら、ご教授をお願いします。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー こちらの質問の説明が不明慮かと思いますので、再々度、追記します。 大変申し訳ございません。 同じことですが、問題をシンプルにします。 ゴールとしては、任意のサイズの2D Matrix(slice型)をtifにセーブすることを目指しています。実際には、10x10 Matrixや50x20 matrixでも、セーブできるfunctionを作成したいです。 しかし、上記のコードでは、問題が2点あります。 1.「sample.tifを読みこむ」過程で、サイズ規定が入りってしまい、サイズの自由度がありません。 2.また、bytes.NewReaderは[]byteしか受け付けません。 2D matrix ([][]byte)を1D ([]byte)に変更することは可能ですが、その場合、tifにセーブした場合、データとしては残りますが、tif fileを画像として確認することができません。 どのようにしたら、この問題を回避して、任意のサイズの2D matrixをtifに保存することが可能でしょうか? 説明が不明慮な点がございました。また、根気強く回答を考えていただき、大変感謝しております。ご教授をお願いします。
回答: 不本意ではありますが、現在のscriptを利用しての方法を見つけました。 任意のサイズのmatrixを保存する前に、そのmatrixのサイズと同じサイズのtif imageを用意します。 例えば、下記のcommand(linux+ImageMagick)を使用しますと、200x100のtifが作成できます。 ``` convert sample.tif -resize 200x100! 200x100.tif ``` このコマンドをscriptの中で動かして、見本を作成します。 その後、上記のfunctionでファイル名を少し変えるだけで、対応はできます。 が、もっとエレガントな方法があると思います。ご教授をお願いします。