我正在使用WP7相机示例,我在捕获图像时遇到了一个问题。现在使用标准480(宽)x 800(h)拍照。我正在尝试做的是将图片作为正方形,因为我的应用程序要求图像是一个完美的正方形。
我将VideoBrush调整为仅显示480x480,并且最初拍摄的图像看起来像是方形图片,但是当您在图片中心内部检查时,它是一张普通的480x800肖像。
有谁知道如何将相机设置为拍摄方形照片或者裁剪上下?
答案 0 :(得分:4)
您需要手动将像素复制到新位图。 因此,如果相机是水平的,并且您希望裁剪图像的左侧部分以使新宽度等于高度,那么这样的东西就可以工作(我没有测试此代码,但即使它不是100%正确,它应该给你基本的想法):
WriteableBitmap SquareImage(WriteableBitmap srcBitmap)
{
int[] srcData = srcBitmap.Pixels;
int[] destData = new int[srcBitmap.PixelHeight * srcBitmap.PixelHeight];
for (int row = 0; row < srcBitmap.PixelHeight; ++row)
{
for (int col = 0; col < srcBitmap.PixelHeight; ++col)
{
destData[(row * srcBitmap.PixelHeight) + col] = srcData[(row * srcBitmap.PixelWidth) + col];
}
}
WriteableBitmap squareBitmap = new WriteableBitmap(srcBitmap.PixelHeight, srcBitmap.PixelHeight);
destData.CopyTo(squareBitmap.Pixels, 0);
return squareBitmap;
}