diff --git a/Greenshot/Helpers/ClipboardHelper.cs b/Greenshot/Helpers/ClipboardHelper.cs index 47540779c..ed6d92669 100644 --- a/Greenshot/Helpers/ClipboardHelper.cs +++ b/Greenshot/Helpers/ClipboardHelper.cs @@ -315,7 +315,7 @@ EndSelection:<<<<<<<4 utf8EncodedHTMLString= utf8EncodedHTMLString.Replace("${width}", image.Width.ToString()); utf8EncodedHTMLString= utf8EncodedHTMLString.Replace("${height}", image.Height.ToString()); utf8EncodedHTMLString = utf8EncodedHTMLString.Replace("${format}", "png"); - utf8EncodedHTMLString = utf8EncodedHTMLString.Replace("${data}", Convert.ToBase64String(pngStream.GetBuffer())); + utf8EncodedHTMLString = utf8EncodedHTMLString.Replace("${data}", Convert.ToBase64String(pngStream.GetBuffer(),0, (int)pngStream.Length)); StringBuilder sb=new StringBuilder(); sb.Append(utf8EncodedHTMLString); sb.Replace("<<<<<<<1", (utf8EncodedHTMLString.IndexOf("") + "".Length).ToString("D8")); diff --git a/GreenshotConfluencePlugin/ConfluenceDestination.cs b/GreenshotConfluencePlugin/ConfluenceDestination.cs index 4388c4972..d10ac2e29 100644 --- a/GreenshotConfluencePlugin/ConfluenceDestination.cs +++ b/GreenshotConfluencePlugin/ConfluenceDestination.cs @@ -141,40 +141,42 @@ namespace GreenshotConfluencePlugin { } private bool upload(Image image, Page page, string filename, bool openPage) { + byte[] buffer; using (MemoryStream stream = new MemoryStream()) { ConfluencePlugin.Host.SaveToStream(image, stream, config.UploadFormat, config.UploadJpegQuality); - byte [] buffer = stream.GetBuffer(); - try { - ConfluencePlugin.ConfluenceConnector.addAttachment(page.id, "image/" + config.UploadFormat.ToString().ToLower(), null, filename, buffer); - LOG.Debug("Uploaded to Confluence."); - if (config.CopyWikiMarkupForImageToClipboard) { - int retryCount = 2; - while (retryCount >= 0) { - try { - Clipboard.SetText("!" + filename + "!"); - break; - } catch (Exception ee) { - if (retryCount == 0) { - LOG.Error(ee); - } else { - Thread.Sleep(100); - } - } finally { - --retryCount; + // COPY buffer to array + buffer = stream.ToArray(); + } + try { + ConfluencePlugin.ConfluenceConnector.addAttachment(page.id, "image/" + config.UploadFormat.ToString().ToLower(), null, filename, buffer); + LOG.Debug("Uploaded to Confluence."); + if (config.CopyWikiMarkupForImageToClipboard) { + int retryCount = 2; + while (retryCount >= 0) { + try { + Clipboard.SetText("!" + filename + "!"); + break; + } catch (Exception ee) { + if (retryCount == 0) { + LOG.Error(ee); + } else { + Thread.Sleep(100); } + } finally { + --retryCount; } } - if (openPage) { - try { - Process.Start(page.Url); - } catch {} - } else { - System.Windows.MessageBox.Show(lang.GetString(LangKey.upload_success)); - } - return true; - } catch(Exception e) { - System.Windows.MessageBox.Show(lang.GetString(LangKey.upload_failure) + " " + e.Message); } + if (openPage) { + try { + Process.Start(page.Url); + } catch {} + } else { + System.Windows.MessageBox.Show(lang.GetString(LangKey.upload_success)); + } + return true; + } catch(Exception e) { + System.Windows.MessageBox.Show(lang.GetString(LangKey.upload_failure) + " " + e.Message); } return false; } diff --git a/GreenshotImgurPlugin/ImgurPlugin.cs b/GreenshotImgurPlugin/ImgurPlugin.cs index 1617c2bac..8348cc096 100644 --- a/GreenshotImgurPlugin/ImgurPlugin.cs +++ b/GreenshotImgurPlugin/ImgurPlugin.cs @@ -141,11 +141,9 @@ namespace GreenshotImgurPlugin { BackgroundForm backgroundForm = BackgroundForm.ShowAndWait(Attributes.Name, lang.GetString(LangKey.communication_wait)); host.SaveToStream(image, stream, config.UploadFormat, config.UploadJpegQuality); - byte[] buffer = stream.GetBuffer(); - try { string filename = Path.GetFileName(host.GetFilename(config.UploadFormat, captureDetails)); - ImgurInfo imgurInfo = ImgurUtils.UploadToImgur(buffer, captureDetails.DateTime.ToString(), filename); + ImgurInfo imgurInfo = ImgurUtils.UploadToImgur(stream.GetBuffer(), (int)stream.Length, captureDetails.DateTime.ToString(), filename); LOG.InfoFormat("Storing imgur upload for hash {0} and delete hash {1}", imgurInfo.Hash, imgurInfo.DeleteHash); config.ImgurUploadHistory.Add(imgurInfo.Hash, imgurInfo.DeleteHash); config.runtimeImgurHistory.Add(imgurInfo.Hash, imgurInfo); @@ -181,10 +179,9 @@ namespace GreenshotImgurPlugin { BackgroundForm backgroundForm = BackgroundForm.ShowAndWait(Attributes.Name, lang.GetString(LangKey.communication_wait)); imageEditor.SaveToStream(stream, config.UploadFormat, config.UploadJpegQuality); - byte [] buffer = stream.GetBuffer(); try { string filename = Path.GetFileName(host.GetFilename(config.UploadFormat, imageEditor.CaptureDetails)); - ImgurInfo imgurInfo = ImgurUtils.UploadToImgur(buffer, imageEditor.CaptureDetails.Title, filename); + ImgurInfo imgurInfo = ImgurUtils.UploadToImgur(stream.GetBuffer(), (int)stream.Length, imageEditor.CaptureDetails.Title, filename); imageEditor.Surface.Modified = false; LOG.InfoFormat("Storing imgur upload for hash {0} and delete hash {1}", imgurInfo.Hash, imgurInfo.DeleteHash); config.ImgurUploadHistory.Add(imgurInfo.Hash, imgurInfo.DeleteHash); diff --git a/GreenshotImgurPlugin/ImgurUtils.cs b/GreenshotImgurPlugin/ImgurUtils.cs index 1dbfb1788..7c53fafe0 100644 --- a/GreenshotImgurPlugin/ImgurUtils.cs +++ b/GreenshotImgurPlugin/ImgurUtils.cs @@ -85,11 +85,11 @@ namespace GreenshotImgurPlugin { /// /// byte[] with image data /// ImgurResponse - public static ImgurInfo UploadToImgur(byte[] imageData, string title, string filename) { + public static ImgurInfo UploadToImgur(byte[] imageData, int dataLength, string title, string filename) { StringBuilder uploadRequest = new StringBuilder(); // Add image uploadRequest.Append("image="); - uploadRequest.Append(HttpUtility.UrlEncode(System.Convert.ToBase64String(imageData))); + uploadRequest.Append(HttpUtility.UrlEncode(System.Convert.ToBase64String(imageData, 0, dataLength))); // add key uploadRequest.Append("&"); uploadRequest.Append("key="); diff --git a/GreenshotJiraPlugin/JiraDestination.cs b/GreenshotJiraPlugin/JiraDestination.cs index 497fc00d5..719c300ef 100644 --- a/GreenshotJiraPlugin/JiraDestination.cs +++ b/GreenshotJiraPlugin/JiraDestination.cs @@ -101,25 +101,27 @@ namespace GreenshotJiraPlugin { public override bool ExportCapture(ISurface surface, ICaptureDetails captureDetails) { string filename = Path.GetFileName(jiraPlugin.Host.GetFilename(config.UploadFormat, captureDetails)); + byte[] buffer; if (jira != null) { using (MemoryStream stream = new MemoryStream()) { - BackgroundForm backgroundForm = BackgroundForm.ShowAndWait(Description, lang.GetString(LangKey.communication_wait)); - try { - using (Image image = surface.GetImageForExport()) { - jiraPlugin.Host.SaveToStream(image, stream, config.UploadFormat, config.UploadJpegQuality); - } - byte [] buffer = stream.GetBuffer(); - jiraPlugin.JiraConnector.addAttachment(jira.Key, filename, buffer); - LOG.Debug("Uploaded to Jira."); - backgroundForm.CloseDialog(); - MessageBox.Show(lang.GetString(LangKey.upload_success)); - surface.SendMessageEvent(this, SurfaceMessageTyp.Info, jiraPlugin.Host.CoreLanguage.GetFormattedString("exported_to", Description)); - surface.Modified = false; - return true; - } catch(Exception e) { - backgroundForm.CloseDialog(); - MessageBox.Show(lang.GetString(LangKey.upload_failure) + " " + e.Message); + using (Image image = surface.GetImageForExport()) { + jiraPlugin.Host.SaveToStream(image, stream, config.UploadFormat, config.UploadJpegQuality); } + // COPY stream to buffer + buffer = stream.ToArray(); + } + BackgroundForm backgroundForm = BackgroundForm.ShowAndWait(Description, lang.GetString(LangKey.communication_wait)); + try { + jiraPlugin.JiraConnector.addAttachment(jira.Key, filename, buffer); + LOG.Debug("Uploaded to Jira."); + backgroundForm.CloseDialog(); + MessageBox.Show(lang.GetString(LangKey.upload_success)); + surface.SendMessageEvent(this, SurfaceMessageTyp.Info, jiraPlugin.Host.CoreLanguage.GetFormattedString("exported_to", Description)); + surface.Modified = false; + return true; + } catch (Exception e) { + backgroundForm.CloseDialog(); + MessageBox.Show(lang.GetString(LangKey.upload_failure) + " " + e.Message); } } else { JiraForm jiraForm = new JiraForm(jiraPlugin.JiraConnector); @@ -129,24 +131,24 @@ namespace GreenshotJiraPlugin { DialogResult result = jiraForm.ShowDialog(); if (result == DialogResult.OK) { using (MemoryStream stream = new MemoryStream()) { - BackgroundForm backgroundForm = BackgroundForm.ShowAndWait(Description, lang.GetString(LangKey.communication_wait)); - try { - using (Image image = surface.GetImageForExport()) { - jiraPlugin.Host.SaveToStream(image, stream, config.UploadFormat, config.UploadJpegQuality); - } - - byte [] buffer = stream.GetBuffer(); - jiraForm.upload(buffer); - LOG.Debug("Uploaded to Jira."); - backgroundForm.CloseDialog(); - MessageBox.Show(lang.GetString(LangKey.upload_success)); - surface.SendMessageEvent(this, SurfaceMessageTyp.Info, "Exported to Jira " + jiraForm.getJiraIssue().Key); - surface.Modified = false; - return true; - } catch(Exception e) { - backgroundForm.CloseDialog(); - MessageBox.Show(lang.GetString(LangKey.upload_failure) + " " + e.Message); + using (Image image = surface.GetImageForExport()) { + jiraPlugin.Host.SaveToStream(image, stream, config.UploadFormat, config.UploadJpegQuality); } + // COPY stream to buffer + buffer = stream.ToArray(); + } + BackgroundForm backgroundForm = BackgroundForm.ShowAndWait(Description, lang.GetString(LangKey.communication_wait)); + try { + jiraForm.upload(buffer); + LOG.Debug("Uploaded to Jira."); + backgroundForm.CloseDialog(); + MessageBox.Show(lang.GetString(LangKey.upload_success)); + surface.SendMessageEvent(this, SurfaceMessageTyp.Info, "Exported to Jira " + jiraForm.getJiraIssue().Key); + surface.Modified = false; + return true; + } catch(Exception e) { + backgroundForm.CloseDialog(); + MessageBox.Show(lang.GetString(LangKey.upload_failure) + " " + e.Message); } } }