로컬 디스크에서 writeablebitmap 이미지로 이미지 파일을로드하여 사용자가 편집 할 수있게하고 싶습니다. WriteableBitmap 객체를 만들 때 생성자는 pixelwidth와 pixelheight 매개 변수가 필요합니다. 어디에서이 두 가지를 얻을 수 있는지 알 수 없으므로 누구나 도움이 될 수 있습니까?windows8의 이미지 파일에서 writeablebitmap 이미지를 만드는 방법
2
A
답변
3
WriteableBitmap 이미지를 정의 할 때 pixelWidth 및 pixelHeight 상관 없어,이 시도하십시오
using (IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.ReadWrite))
{
WriteableBitmap image = new WriteableBitmap(1, 1);
image.SetSource(stream);
WriteableBitmapImage.Source = image;
}
3
다음 코드를 사용해보십시오. 이 작업을 수행하는 간단한 방법은 BitmapImage을 사용하여 이미지를로드 한 다음이 개체를 WriteableBitmap 생성자로 직접 전달하지만 예상대로 작동하는지 또는 성능 문제인지 기억하지 못합니다. :
BitmapSource bmp = BitmapFrame.Create(
new Uri(@"C:\Users\Public\Pictures\Sample Pictures\Koala.jpg", UriKind.Relative),
BitmapCreateOptions.None, BitmapCacheOption.OnLoad);
if (bmp.Format != PixelFormats.Bgra32)
bmp = new FormatConvertedBitmap(bmp, PixelFormats.Bgra32, null, 1);
// Just ignore the last parameter
WriteableBitmap wbmp = new WriteableBitmap(bmp.PixelWidth, bmp.PixelHeight,
kbmp.DpiX, bmp.DpiY, bmp.Format, bmp.Palette);
Int32Rect r = new Int32Rect(0, 0, bmp.PixelWidth, bmp.PixelHeight);
wbmp.Lock();
bmp.CopyPixels(r, wbmp.BackBuffer, wbmp.BackBufferStride * wbmp.PixelHeight,
wbmp.BackBufferStride);
wbmp.AddDirtyRect(r);
wbmp.Unlock();
3
을 올바른 픽셀 폭과 높이를 원한다면, 당신은 그것을로드해야 먼저 BitmapImage에 삽입하여 corr을 채 웁니다. ectly :
StorageFile storageFile =
await StorageFile.GetFileFromApplicationUriAsync("ms-appx:///myimage.png");
using (IRandomAccessStream fileStream = await storageFile.OpenAsync(FileAccessMode.Read))
{
BitmapImage bitmapImage = new BitmapImage();
await bitmapImage.SetSourceAsync(fileStream);
WriteableBitmap writeableBitmap =
new WriteableBitmap(bitmapImage.PixelWidth, bitmapImage.PixelHeight);
fileStream.Seek(0);
await writeableBitmap.SetSourceAsync(fileStream);
}
은 (WinRT 응용 프로그램의 경우)
당신은 어떻게 파일에서 이미지를로드 할 수 있습니까? –
통해 FileOpenPicker – James
하지만 ** BitmapImage **를 통해 이미지를로드하고 ** 그런 다음 ** ** WriteableBitmap **, 맞죠? –