我导入了灰度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