Skip to content

Commit 2899bce

Browse files
committed
Display bitmaps, convert bitmap buffers to PNGs
Fixes #183
1 parent b583c50 commit 2899bce

File tree

3 files changed

+17
-13
lines changed

3 files changed

+17
-13
lines changed

Signal-Windows.Lib/OutgoingMessages.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ namespace Signal_Windows.Lib
2323
{
2424
class OutgoingMessages
2525
{
26-
private readonly ILogger Logger = LibsignalLogging.CreateLogger<IncomingMessages>();
26+
private readonly ILogger Logger = LibsignalLogging.CreateLogger<OutgoingMessages>();
2727
private readonly CancellationToken Token;
2828
private readonly SignalServiceMessageSender MessageSender;
2929
private readonly SignalLibHandle Handle;

Signal-Windows/Controls/Attachment.xaml.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,8 @@ private void AttachmentDownloadIcon_Tapped(object sender, TappedRoutedEventArgs
9292
{
9393
"image/jpeg",
9494
"image/png",
95-
"image/gif"
95+
"image/gif",
96+
"image/bmp"
9697
};
9798

9899
public bool HandleUpdate(SignalAttachment sa)

Signal-Windows/Controls/Conversation.xaml.cs

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
using System.Threading.Tasks;
1616
using Windows.ApplicationModel.DataTransfer;
1717
using Windows.Foundation;
18+
using Windows.Graphics.Imaging;
1819
using Windows.Storage;
1920
using Windows.Storage.Pickers;
2021
using Windows.Storage.Streams;
@@ -471,18 +472,20 @@ private async void Grid_KeyDown(object sender, KeyRoutedEventArgs e)
471472
{
472473
RandomAccessStreamReference pastedBitmap = await dataPackageView.GetBitmapAsync();
473474
var pastedBitmapStream = await pastedBitmap.OpenReadAsync();
474-
StorageFile tmpFile = await StorageFile.CreateStreamedFileAsync("Signal-Windows-tmpbitmap.bmp", async (fileStream) =>
475+
var tmpFile = await ApplicationData.Current.TemporaryFolder.CreateFileAsync("Signal-Windows-Screenshot.png", CreationCollisionOption.GenerateUniqueName);
476+
using (var tmpFileStream = await tmpFile.OpenAsync(FileAccessMode.ReadWrite))
475477
{
476-
byte[] buffer = new byte[8192];
477-
var read = await pastedBitmapStream.ReadAsync(buffer.AsBuffer(), (uint) buffer.Length, InputStreamOptions.None);
478-
while (read.Length > 0)
479-
{
480-
await fileStream.WriteAsync(read);
481-
read = await pastedBitmapStream.ReadAsync(buffer.AsBuffer(), (uint) buffer.Length, InputStreamOptions.None);
482-
}
483-
await fileStream.FlushAsync();
484-
fileStream.Dispose();
485-
}, null);
478+
BitmapDecoder decoder = await BitmapDecoder.CreateAsync(pastedBitmapStream);
479+
var pixels = await decoder.GetPixelDataAsync();
480+
BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, tmpFileStream);
481+
encoder.SetPixelData(decoder.BitmapPixelFormat,
482+
BitmapAlphaMode.Ignore, // Alpha is not used
483+
decoder.OrientedPixelWidth,
484+
decoder.OrientedPixelHeight,
485+
decoder.DpiX, decoder.DpiY,
486+
pixels.DetachPixelData());
487+
await encoder.FlushAsync();
488+
}
486489
SelectedFile = tmpFile;
487490
AddedAttachmentDisplay.ShowAttachment(SelectedFile.Name);
488491
UpdateSendButtonIcon();

0 commit comments

Comments
 (0)