private async Task SendFile() { if (this.client.isConnected) { fileDialog = new OpenFileDialog(); fileDialog.ShowDialog(); fileDialog.DefaultExt = ".png"; fileDialog.Filter = "JPEG Files (*.jpeg)|*.jpeg|PNG Files (*.png)|*.png|JPG Files (*.jpg)|*.jpg|GIF Files (*.gif)|*.gif"; string filePath = fileDialog.FileName; ImagePacket imagePacket = new ImagePacket(); imagePacket.Imagebmp = new Bitmap(filePath); imagePacket.isPersonal = false; imagePacket.sender = this.client.Username; await this.client.TrySendObject(imagePacket); } else { App.Current.Dispatcher.Invoke((Action) delegate { messages.Add(new ViewItemModel() { message = "client you are trying to reach is not connected" }); }); } }
private async Task SendFile() { if (this.client.isConnected) { fileDialog = new OpenFileDialog(); fileDialog.ShowDialog(); fileDialog.DefaultExt = ".png"; fileDialog.Filter = "JPEG Files (*.jpeg)|*.jpeg|PNG Files (*.png)|*.png|JPG Files (*.jpg)|*.jpg|GIF Files (*.gif)|*.gif"; string filePath = fileDialog.FileName; ImagePacket imagePacket = new ImagePacket(); imagePacket.Imagebmp = new System.Drawing.Bitmap(filePath); imagePacket.isPersonal = true; imagePacket.sender = this.client.Username; imagePacket.targetUsername = targetUsername; this.client.TrySendObject(imagePacket); BitmapToImageConverter bmpConverter = new BitmapToImageConverter(); var image = bmpConverter.Convert(imagePacket.Imagebmp); messages.Add(new ViewItemModel() { bmpImage = (BitmapImage)image, message = client.Username + "sent and Image!" }); } else { messages.Add(new ViewItemModel() { message = "Not connected" }); } }
public void DisplayImage(Packet packet) { ImagePacket imgpkt = (ImagePacket)packet; string filePath = ImageHelper.SaveImage(imgpkt); imgpkt.StrImage = filePath; Messages.Add(packet); }
public void SendImage() { string path = ImageHelper.SelectImage(); if (path != null) { Image img = Image.FromFile(path); //Debug.WriteLine($"Image: {img.ToString()}"); ImagePacket packet = new ImagePacket(img, User.Username); Connection.Send(packet); packet.StrImage = path; Messages.Add(packet); } }
public void AddImage(ImagePacket imgPacket) { BitmapToImageConverter converter = new BitmapToImageConverter(); var receivedImage = converter.Convert(imgPacket.Imagebmp); viewModel.AddMessage(new ViewItemModel() { bmpImage = (BitmapImage)receivedImage, message = imgPacket.sender + " sent an Image!" }); //add autoscrolling when first collection message is added if (viewModel.messages.Count == 1) { AddAutoScrolling(); } }
void ph_Image(Packet pa) { ImagePacket p = pa as ImagePacket; Image i = Extras.ImageFromBytes(p.Image); if (p.Type == ImagePacket.ImageType.Background) { SplashScreen.BackgroundImage = i; if (SplashScreen.GetScreen() != null) { SplashScreen.GetScreen().Image.Image = i; } } else { modImages.Images.Add(p.ShowOn, i); } }
private async Task SendFile() { if (this.client.isConnected) { try { if (filePath != null && filePath != string.Empty) { ImagePacket imagePacket = new ImagePacket(); imagePacket.Imagebmp = new Bitmap(filePath); imagePacket.isPersonal = false; imagePacket.sender = this.client.Username; try { await this.client.TrySendObject(imagePacket); } catch { await HandleDisconnection(imagePacket); } } } catch (ArgumentException) { AddMessage(new ViewItemModel() { message = "File is not in a valid format, please send only jpeg, png , gif or jpg files!" }); } finally { filePath = string.Empty; } } else { AddMessage(new ViewItemModel() { message = "You are not connected" }); } filePath = string.Empty; }
private void HandleImagePacket(Message m, ViewerConnection vc, ViewerAgentAccessor agent) { ImagePacket res = (ImagePacket)m; ImageReceiveInfo info; if (m_ActiveImageTransfers.TryGetValue(res.ID, out info)) { info.Segments[res.Packet] = res; if (info.IsComplete) { vc.PostEvent(new TextureReceivedEvent { Agent = agent, TextureID = res.ID, Success = 1, Data = new ByteArrayApi.ByteArray(info.Data) }); m_ActiveImageTransfers.Remove(res.ID); } } }
private async Task SendFile() { if (this.client.isConnected) { try { ImagePacket imagePacket = new ImagePacket(); imagePacket.Imagebmp = new System.Drawing.Bitmap(filePath); imagePacket.isPersonal = true; imagePacket.sender = this.client.Username; imagePacket.targetUsername = targetUsername; try { await this.client.TrySendObject(imagePacket); } catch { if (this.client.requestDisconnection) { AddMessage(new ViewItemModel() { message = "You have been disconnected." }); } else { AddMessage(new ViewItemModel() { message = "You have been forcefully disconnected. Try to reconnect from the main window." }); } } finally { filePath = string.Empty; } BitmapToImageConverter bmpConverter = new BitmapToImageConverter(); var image = bmpConverter.Convert(imagePacket.Imagebmp); AddMessage(new ViewItemModel() { bmpImage = (BitmapImage)image, message = client.Username + "sent and Image!" }); } catch (ArgumentException) { AddMessage(new ViewItemModel() { message = "File is not in a valid format, please send only jpeg, png , gif or jpg files!" }); filePath = string.Empty; } } else { AddMessage(new ViewItemModel() { message = "Not connected" }); } filePath = string.Empty; }
private void TextureDownloadThread(object param) { Thread.CurrentThread.Name = string.Format("LLUDP:Texture Downloader for CircuitCode {0} / IP {1}", CircuitCode, RemoteEndPoint.ToString()); var bakedReqs = new Queue <RequestImage.RequestImageEntry>(); var normalReqs = new Queue <RequestImage.RequestImageEntry>(); var activeRequestImages = new HashSet <UUID>(); #warning Implement Priority handling while (true) { if (!m_TextureDownloadThreadRunning) { return; } try { var req = (bakedReqs.Count != 0 || normalReqs.Count != 0) ? (RequestImage)m_TextureDownloadQueue.Dequeue(0) : (RequestImage)m_TextureDownloadQueue.Dequeue(1000); foreach (var imageRequest in req.RequestImageList) { if (imageRequest.DiscardLevel < 0) { /* skip discard level < 0 */ continue; } if (!activeRequestImages.Contains(imageRequest.ImageID)) { activeRequestImages.Add(imageRequest.ImageID); if (imageRequest.Type == RequestImage.ImageType.Baked || imageRequest.Type == RequestImage.ImageType.ServerBaked) { bakedReqs.Enqueue(imageRequest); } else { normalReqs.Enqueue(imageRequest); } } } } catch { if (bakedReqs.Count == 0 && normalReqs.Count == 0) { continue; } } if (bakedReqs.Count != 0 || normalReqs.Count != 0) { RequestImage.RequestImageEntry imageRequest; try { imageRequest = bakedReqs.Dequeue(); } catch { try { imageRequest = normalReqs.Dequeue(); } catch { continue; } } if (LogUDPTextureDownloads) { m_Log.InfoFormat("Processing texture {0}", imageRequest.ImageID); } /* let us prefer the scene's asset service */ AssetData asset; try { asset = Scene.AssetService[imageRequest.ImageID]; } catch (Exception e1) { try { /* now we try the agent's asset service */ asset = Agent.AssetService[imageRequest.ImageID]; try { /* let us try to store the image locally */ asset.Temporary = true; Scene.AssetService.Store(asset); } catch (Exception e3) { m_Log.DebugFormat("Failed to store asset {0} locally (RequestImage): {1}", imageRequest.ImageID, e3.Message); } } catch (Exception e2) { if (Server.LogAssetFailures) { m_Log.DebugFormat("Failed to download image {0} (RequestImage): {1} or {2}\nA: {3}\nB: {4}", imageRequest.ImageID, e1.Message, e2.Message, e1.StackTrace, e2.StackTrace); } var failres = new ImageNotInDatabase { ID = imageRequest.ImageID }; SendMessage(failres); if (LogUDPTextureDownloads) { m_Log.InfoFormat("texture {0} not found", imageRequest.ImageID); } activeRequestImages.Remove(imageRequest.ImageID); continue; } } ImageCodec codec; switch (asset.Type) { case AssetType.ImageJPEG: codec = ImageCodec.JPEG; break; case AssetType.ImageTGA: case AssetType.TextureTGA: codec = ImageCodec.TGA; break; case AssetType.Texture: codec = ImageCodec.J2C; break; default: var failres = new ImageNotInDatabase { ID = imageRequest.ImageID }; SendMessage(failres); activeRequestImages.Remove(imageRequest.ImageID); if (LogUDPTextureDownloads) { m_Log.InfoFormat("Asset {0} is not a texture", imageRequest.ImageID); } continue; } var res = new ImageData { Codec = codec, ID = imageRequest.ImageID, Size = (uint)asset.Data.Length }; if (asset.Data.Length > IMAGE_FIRST_PACKET_SIZE) { List <Message> messages = new List <Message>(); res.Data = new byte[IMAGE_FIRST_PACKET_SIZE]; Buffer.BlockCopy(asset.Data, 0, res.Data, 0, IMAGE_FIRST_PACKET_SIZE); messages.Add(res); int offset = IMAGE_FIRST_PACKET_SIZE; ushort packetno = 1; while (offset < asset.Data.Length) { var ip = new ImagePacket { ID = imageRequest.ImageID, Packet = packetno++, Data = (asset.Data.Length - offset > IMAGE_PACKET_SIZE) ? new byte[IMAGE_PACKET_SIZE] : new byte[asset.Data.Length - offset] }; Buffer.BlockCopy(asset.Data, offset, ip.Data, 0, ip.Data.Length); messages.Add(ip); offset += IMAGE_PACKET_SIZE; } res.Packets = packetno; foreach (Message m in messages) { SendMessage(m); } } else { res.Data = asset.Data; res.Packets = 1; SendMessage(res); } activeRequestImages.Remove(imageRequest.ImageID); if (LogUDPTextureDownloads) { m_Log.InfoFormat("Download of texture {0} finished", imageRequest.ImageID); } } } }