BitmapSource copyPixels правильные аргументы

Использованный мною шаг генерирует исключение. Я не знаю, какой шаг правильный. Входное изображение — 32-битный JPG. Пожалуйста, скажите мне, какие значения (я пробовал много вещей, но они генерировали исключения или испортили JPG), я должен поместить в:

введите описание изображения здесь

array<System::Byte>^ pixels = gcnew array<System::Byte>(WHAT VALUE);
bitmapSource->CopyPixels(pixels, WHAT VALUE, 0);

        // Jpg.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"#include <iostream>
#using <mscorlib.dll> //requires CLI
using namespace System;
using namespace System::IO;
using namespace System::Windows::Media::Imaging;
using namespace System::Windows::Media;
using namespace System::Windows::Controls;
using namespace std;
[System::STAThread]
int _tmain(int argc, _TCHAR* argv[])
{// Open a Stream and decode a JPEG image
Stream^ imageStreamSource = gcnew FileStream("C:/heart2.jpg", FileMode::Open, FileAccess::Read, FileShare::Read);

JpegBitmapDecoder^ decoder = gcnew JpegBitmapDecoder(imageStreamSource, BitmapCreateOptions::PreservePixelFormat, BitmapCacheOption::Default);
BitmapSource^ bitmapSource = decoder->Frames[0];//< --mamy bitmape
// Draw the Image
Image^ myImage = gcnew Image();myImage->Source = bitmapSource;
myImage->Stretch = Stretch::None;
myImage->Margin = System::Windows::Thickness(20);int width = bitmapSource->PixelWidth;
int height = bitmapSource->PixelHeight;
int stride = (width* bitmapSource->Format.BitsPerPixel + 31)/32;
array<System::Byte>^ pixels = gcnew array<System::Byte>(height * width * stride);
bitmapSource->CopyPixels(pixels, stride, 0);int x;
cin>>x;
return 0;
}

0

Решение

Google

http://msdn.microsoft.com/en-us/library/system.drawing.imaging.bitmapdata.stride.aspx

Шаг — это ширина одного ряда пикселей (строки развертки), округленная до четырехбайтовой границы.

Таким образом, правильное значение зависит от того, сколько бит на пиксель у вас на изображении.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]