使用相机捕捉图片作为完美的正方形?

时间:2012-06-01 23:53:36

标签: c# windows-phone-7 camera windows-phone-7.1

我正在使用WP7相机示例,我在捕获图像时遇到了一个问题。现在使用标准480(宽)x 800(h)拍照。我正在尝试做的是将图片作为正方形,因为我的应用程序要求图像是一个完美的正方形。

我将VideoBrush调整为仅显示480x480,并且最初拍摄的图像看起来像是方形图片,但是当您在图片中心内部检查时,它是一张普通的480x800肖像。

有谁知道如何将相机设置为拍摄方形照片或者裁剪上下?

1 个答案:

答案 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;
    }