我導入了灰度16位圖像。我把它作爲一個BitmapSource和一個Image(控件命名空間)。我怎樣才能訪問個人像素? CopyPixels是我讀過關於唯一還是最好的方法?如果是這樣,我不知道如何設置步幅,以及哪個像素包含像素強度值。16位TIFF中的訪問像素
方法一:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.IO;
using Nikon;
using WindowsFormsApplication1;
using System.Windows.Media.Imaging;
using System.Drawing;
using System.Drawing.Imaging;
using System.Windows.Controls;
namespace Map
{
class OpenTIFF
{
static void OpenOne()
{
// Open a Stream and decode a TIFF image
Stream imageStreamSource = new FileStream("C:\\Users\\Me\\Desktop\\"MyTif.tif", FileMode.Open, FileAccess.Read, FileShare.Read);
TiffBitmapDecoder decoder = new TiffBitmapDecoder(imageStreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
BitmapSource bitmapSource = decoder.Frames[0];
System.Windows.Controls.Image image = new System.Windows.Controls.Image();
image.Source = bitmapSource;
}
}
}
我認爲這可能是簡單的(發現here),但後來我很清楚如何訪問單個像素在一維字節數組。
方法2:
static void OpenTwo()
{
System.Drawing.Image imageToConvert = System.Drawing.Image.FromFile("aa.tif", true);
byte[] Ret = new byte[0];
using (MemoryStream ms = new MemoryStream())
{
imageToConvert.Save(ms, ImageFormat.Tiff);
Ret = ms.ToArray();
}
}
感謝, 丹
我正在尋找它......看起來很有希望!我會發布如何去。謝謝,丹佛。 – DanG 2013-04-26 18:35:54
我現在一整天都在ban and,無法在Visual Studio中工作。任何幫助?我需要特定的步驟來將FreeImage.NET解決方案和C++ DLL加載到我現有的項目中。我是一名初學者,並且會喜歡跳躍的開始...... – DanG 2013-04-27 01:52:30
@DanG我用一個示例更新了我的帖子,以幫助您開始。 – denver 2013-04-27 03:11:18