2011-04-04 127 views
1

是否有任何库可以帮助我从WP7上的手机媒体库加载的JPG文件获取单个像素?我需要访问单个像素,但现在我只能将整个文件转换为字节数组或通过存储器流访问这些字节。有任何想法吗?我发现FJcore但我不能使用它,因为反射...如何从wp7上的JPG文件获取位图数据

这里是从来就得到:

byte[] contents = new byte[e.ChosenPhoto.Length]; 
MemoryStream fullFileStream = new MemoryStream(); 
int bytes; 
while ((bytes = e.ChosenPhoto.Read(contents, 0, contents.Length)) > 0) 
{ 
    fullFileStream.Write(contents, 0, bytes); 
} 

我需要用类似方法的getPixels ()访问某些库从加载的图像到单个像素。

谢谢

回答

0

使用WritableBitmap.Pixels。 Silverlight for Windows Phone 7中的像素操作有时会遇到性能低下的问题 - 请考虑使用XNA。

+0

对不起,我忘了提及加载的图片真的很大(例如10 000 x 10 000),所以我不能使用WriteableBitmap,因为它的图像最大尺寸约为2000 x 2000。我需要使用内存流和字节数组加载该图片 - 从该数组我需要单个像素。 – Samic 2011-04-05 11:15:55

+0

也许在XNA或Open Source项目中有一些东西。基本上,你已经制作了你的定制图像处理器。读取几kB内存并处理它。 – 2011-04-05 18:10:15

+0

但我不知道如何处理那些我已经加载大jpg图像的字节数组。我需要将这个图像分成更小的片段 - 因为我需要找出原始图像的宽度和高度,并获得单个像素的访问权限。你知道一些开源项目或库可以帮助我吗?我没有线索:-( – Samic 2011-04-05 21:42:31

0

http://writeablebitmapex.codeplex.com/包括一个GetPixel方法,这听起来就像你所需要的。

更新
基于您对其他的答案提出的意见,我想你需要conider不同的方法。 2000像素限制是一种框架限制,旨在通过不包括明显大于屏幕尺寸的框架元素来尝试和保持性能。

如果您的图像是10k x 10k像素,那么您应该认真考虑将它们从设备上处理掉,然后仅将较小的版本或子部分加载到实际设备上。

+0

我的报告的任何提示我已经在上面添加了吗? – Samic 2011-04-06 22:53:05

+0

但是我正在从Phone的媒体库中加载图片,我需要在该设备上处理它们... – Samic 2011-04-07 23:04:54

相关问题