mirror of
https://github.com/greenshot/greenshot
synced 2025-08-20 05:23:24 -07:00
Fixed bug where the image exported to the Clipboard, Jira, Imgur or Confluence is bigger as it should be. The reason is that "MemoryStream.getBuffer()" returns the byte buffer for the stream, which is usually bigger (capacity) than the actual data!!
git-svn-id: http://svn.code.sf.net/p/greenshot/code/trunk@1702 7dccd23d-a4a3-4e1f-8c07-b4c1b4018ab4
This commit is contained in:
parent
4267c50984
commit
40807d5d2b
5 changed files with 70 additions and 69 deletions
|
@ -315,7 +315,7 @@ EndSelection:<<<<<<<4
|
||||||
utf8EncodedHTMLString= utf8EncodedHTMLString.Replace("${width}", image.Width.ToString());
|
utf8EncodedHTMLString= utf8EncodedHTMLString.Replace("${width}", image.Width.ToString());
|
||||||
utf8EncodedHTMLString= utf8EncodedHTMLString.Replace("${height}", image.Height.ToString());
|
utf8EncodedHTMLString= utf8EncodedHTMLString.Replace("${height}", image.Height.ToString());
|
||||||
utf8EncodedHTMLString = utf8EncodedHTMLString.Replace("${format}", "png");
|
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();
|
StringBuilder sb=new StringBuilder();
|
||||||
sb.Append(utf8EncodedHTMLString);
|
sb.Append(utf8EncodedHTMLString);
|
||||||
sb.Replace("<<<<<<<1", (utf8EncodedHTMLString.IndexOf("<HTML>") + "<HTML>".Length).ToString("D8"));
|
sb.Replace("<<<<<<<1", (utf8EncodedHTMLString.IndexOf("<HTML>") + "<HTML>".Length).ToString("D8"));
|
||||||
|
|
|
@ -141,9 +141,12 @@ namespace GreenshotConfluencePlugin {
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool upload(Image image, Page page, string filename, bool openPage) {
|
private bool upload(Image image, Page page, string filename, bool openPage) {
|
||||||
|
byte[] buffer;
|
||||||
using (MemoryStream stream = new MemoryStream()) {
|
using (MemoryStream stream = new MemoryStream()) {
|
||||||
ConfluencePlugin.Host.SaveToStream(image, stream, config.UploadFormat, config.UploadJpegQuality);
|
ConfluencePlugin.Host.SaveToStream(image, stream, config.UploadFormat, config.UploadJpegQuality);
|
||||||
byte [] buffer = stream.GetBuffer();
|
// COPY buffer to array
|
||||||
|
buffer = stream.ToArray();
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
ConfluencePlugin.ConfluenceConnector.addAttachment(page.id, "image/" + config.UploadFormat.ToString().ToLower(), null, filename, buffer);
|
ConfluencePlugin.ConfluenceConnector.addAttachment(page.id, "image/" + config.UploadFormat.ToString().ToLower(), null, filename, buffer);
|
||||||
LOG.Debug("Uploaded to Confluence.");
|
LOG.Debug("Uploaded to Confluence.");
|
||||||
|
@ -175,7 +178,6 @@ namespace GreenshotConfluencePlugin {
|
||||||
} catch(Exception e) {
|
} catch(Exception e) {
|
||||||
System.Windows.MessageBox.Show(lang.GetString(LangKey.upload_failure) + " " + e.Message);
|
System.Windows.MessageBox.Show(lang.GetString(LangKey.upload_failure) + " " + e.Message);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -141,11 +141,9 @@ namespace GreenshotImgurPlugin {
|
||||||
BackgroundForm backgroundForm = BackgroundForm.ShowAndWait(Attributes.Name, lang.GetString(LangKey.communication_wait));
|
BackgroundForm backgroundForm = BackgroundForm.ShowAndWait(Attributes.Name, lang.GetString(LangKey.communication_wait));
|
||||||
|
|
||||||
host.SaveToStream(image, stream, config.UploadFormat, config.UploadJpegQuality);
|
host.SaveToStream(image, stream, config.UploadFormat, config.UploadJpegQuality);
|
||||||
byte[] buffer = stream.GetBuffer();
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
string filename = Path.GetFileName(host.GetFilename(config.UploadFormat, captureDetails));
|
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);
|
LOG.InfoFormat("Storing imgur upload for hash {0} and delete hash {1}", imgurInfo.Hash, imgurInfo.DeleteHash);
|
||||||
config.ImgurUploadHistory.Add(imgurInfo.Hash, imgurInfo.DeleteHash);
|
config.ImgurUploadHistory.Add(imgurInfo.Hash, imgurInfo.DeleteHash);
|
||||||
config.runtimeImgurHistory.Add(imgurInfo.Hash, imgurInfo);
|
config.runtimeImgurHistory.Add(imgurInfo.Hash, imgurInfo);
|
||||||
|
@ -181,10 +179,9 @@ namespace GreenshotImgurPlugin {
|
||||||
BackgroundForm backgroundForm = BackgroundForm.ShowAndWait(Attributes.Name, lang.GetString(LangKey.communication_wait));
|
BackgroundForm backgroundForm = BackgroundForm.ShowAndWait(Attributes.Name, lang.GetString(LangKey.communication_wait));
|
||||||
|
|
||||||
imageEditor.SaveToStream(stream, config.UploadFormat, config.UploadJpegQuality);
|
imageEditor.SaveToStream(stream, config.UploadFormat, config.UploadJpegQuality);
|
||||||
byte [] buffer = stream.GetBuffer();
|
|
||||||
try {
|
try {
|
||||||
string filename = Path.GetFileName(host.GetFilename(config.UploadFormat, imageEditor.CaptureDetails));
|
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;
|
imageEditor.Surface.Modified = false;
|
||||||
LOG.InfoFormat("Storing imgur upload for hash {0} and delete hash {1}", imgurInfo.Hash, imgurInfo.DeleteHash);
|
LOG.InfoFormat("Storing imgur upload for hash {0} and delete hash {1}", imgurInfo.Hash, imgurInfo.DeleteHash);
|
||||||
config.ImgurUploadHistory.Add(imgurInfo.Hash, imgurInfo.DeleteHash);
|
config.ImgurUploadHistory.Add(imgurInfo.Hash, imgurInfo.DeleteHash);
|
||||||
|
|
|
@ -85,11 +85,11 @@ namespace GreenshotImgurPlugin {
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="imageData">byte[] with image data</param>
|
/// <param name="imageData">byte[] with image data</param>
|
||||||
/// <returns>ImgurResponse</returns>
|
/// <returns>ImgurResponse</returns>
|
||||||
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();
|
StringBuilder uploadRequest = new StringBuilder();
|
||||||
// Add image
|
// Add image
|
||||||
uploadRequest.Append("image=");
|
uploadRequest.Append("image=");
|
||||||
uploadRequest.Append(HttpUtility.UrlEncode(System.Convert.ToBase64String(imageData)));
|
uploadRequest.Append(HttpUtility.UrlEncode(System.Convert.ToBase64String(imageData, 0, dataLength)));
|
||||||
// add key
|
// add key
|
||||||
uploadRequest.Append("&");
|
uploadRequest.Append("&");
|
||||||
uploadRequest.Append("key=");
|
uploadRequest.Append("key=");
|
||||||
|
|
|
@ -101,14 +101,17 @@ namespace GreenshotJiraPlugin {
|
||||||
|
|
||||||
public override bool ExportCapture(ISurface surface, ICaptureDetails captureDetails) {
|
public override bool ExportCapture(ISurface surface, ICaptureDetails captureDetails) {
|
||||||
string filename = Path.GetFileName(jiraPlugin.Host.GetFilename(config.UploadFormat, captureDetails));
|
string filename = Path.GetFileName(jiraPlugin.Host.GetFilename(config.UploadFormat, captureDetails));
|
||||||
|
byte[] buffer;
|
||||||
if (jira != null) {
|
if (jira != null) {
|
||||||
using (MemoryStream stream = new MemoryStream()) {
|
using (MemoryStream stream = new MemoryStream()) {
|
||||||
BackgroundForm backgroundForm = BackgroundForm.ShowAndWait(Description, lang.GetString(LangKey.communication_wait));
|
|
||||||
try {
|
|
||||||
using (Image image = surface.GetImageForExport()) {
|
using (Image image = surface.GetImageForExport()) {
|
||||||
jiraPlugin.Host.SaveToStream(image, stream, config.UploadFormat, config.UploadJpegQuality);
|
jiraPlugin.Host.SaveToStream(image, stream, config.UploadFormat, config.UploadJpegQuality);
|
||||||
}
|
}
|
||||||
byte [] buffer = stream.GetBuffer();
|
// 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);
|
jiraPlugin.JiraConnector.addAttachment(jira.Key, filename, buffer);
|
||||||
LOG.Debug("Uploaded to Jira.");
|
LOG.Debug("Uploaded to Jira.");
|
||||||
backgroundForm.CloseDialog();
|
backgroundForm.CloseDialog();
|
||||||
|
@ -116,11 +119,10 @@ namespace GreenshotJiraPlugin {
|
||||||
surface.SendMessageEvent(this, SurfaceMessageTyp.Info, jiraPlugin.Host.CoreLanguage.GetFormattedString("exported_to", Description));
|
surface.SendMessageEvent(this, SurfaceMessageTyp.Info, jiraPlugin.Host.CoreLanguage.GetFormattedString("exported_to", Description));
|
||||||
surface.Modified = false;
|
surface.Modified = false;
|
||||||
return true;
|
return true;
|
||||||
} catch(Exception e) {
|
} catch (Exception e) {
|
||||||
backgroundForm.CloseDialog();
|
backgroundForm.CloseDialog();
|
||||||
MessageBox.Show(lang.GetString(LangKey.upload_failure) + " " + e.Message);
|
MessageBox.Show(lang.GetString(LangKey.upload_failure) + " " + e.Message);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
JiraForm jiraForm = new JiraForm(jiraPlugin.JiraConnector);
|
JiraForm jiraForm = new JiraForm(jiraPlugin.JiraConnector);
|
||||||
|
|
||||||
|
@ -129,13 +131,14 @@ namespace GreenshotJiraPlugin {
|
||||||
DialogResult result = jiraForm.ShowDialog();
|
DialogResult result = jiraForm.ShowDialog();
|
||||||
if (result == DialogResult.OK) {
|
if (result == DialogResult.OK) {
|
||||||
using (MemoryStream stream = new MemoryStream()) {
|
using (MemoryStream stream = new MemoryStream()) {
|
||||||
BackgroundForm backgroundForm = BackgroundForm.ShowAndWait(Description, lang.GetString(LangKey.communication_wait));
|
|
||||||
try {
|
|
||||||
using (Image image = surface.GetImageForExport()) {
|
using (Image image = surface.GetImageForExport()) {
|
||||||
jiraPlugin.Host.SaveToStream(image, stream, config.UploadFormat, config.UploadJpegQuality);
|
jiraPlugin.Host.SaveToStream(image, stream, config.UploadFormat, config.UploadJpegQuality);
|
||||||
}
|
}
|
||||||
|
// COPY stream to buffer
|
||||||
byte [] buffer = stream.GetBuffer();
|
buffer = stream.ToArray();
|
||||||
|
}
|
||||||
|
BackgroundForm backgroundForm = BackgroundForm.ShowAndWait(Description, lang.GetString(LangKey.communication_wait));
|
||||||
|
try {
|
||||||
jiraForm.upload(buffer);
|
jiraForm.upload(buffer);
|
||||||
LOG.Debug("Uploaded to Jira.");
|
LOG.Debug("Uploaded to Jira.");
|
||||||
backgroundForm.CloseDialog();
|
backgroundForm.CloseDialog();
|
||||||
|
@ -149,7 +152,6 @@ namespace GreenshotJiraPlugin {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue