public void UploadImage(Image img)
{
Icon defIcon = (Icon)Tray.Icon.Clone();
Tray.Icon = new Icon("Addons/Imgur/Icon.ico");
MemoryStream ms = new MemoryStream();
ImageFormat format = ImageFormat.Png;
string formatStr = imageFormat.ToLower();
switch (formatStr) {
case "png": format = ImageFormat.Png; break;
case "jpg": format = ImageFormat.Jpeg; break;
case "gif": format = ImageFormat.Gif; break;
}
this.ImagePipeline(img);
img.Save(ms, format);
if (jpegCompression) {
if (ms.Length / 1000 > jpegCompressionFilesize) {
ms.Dispose();
ms = new MemoryStream();
// Set up the encoder, codec and params
System.Drawing.Imaging.Encoder jpegEncoder = System.Drawing.Imaging.Encoder.Compression;
ImageCodecInfo jpegCodec = this.GetEncoder(ImageFormat.Jpeg);
EncoderParameters jpegParams = new EncoderParameters();
jpegParams.Param[0] = new EncoderParameter(jpegEncoder, jpegCompressionRate);
// Now save it with the new encoder
img.Save(ms, jpegCodec, jpegParams);
// And make sure the filename gets set correctly (for the Imgur addon this is only for the backups)
formatStr = "jpg";
}
}
string url = this.UploadToImgur(ms, img.Width, img.Height);
img.Dispose();
if (url != "CANCELED" && url != "")
this.Backup(ms.GetBuffer(), url.Split('/', '\\').Last());
else
this.Backup(ms.GetBuffer(), this.RandomFilename(5) + "." + formatStr);
if (url != "CANCELED") {
if (url != "") {
this.SetClipboardText(url);
Tray.ShowBalloonTip(1000, "Upload success!", "Image uploaded to Imgur and URL copied to clipboard.", ToolTipIcon.Info);
} else {
this.ProgressBar.Done();
Tray.ShowBalloonTip(1000, "Upload failed!", "Something went wrong, probably on Imgur's side. Try again.", ToolTipIcon.Error);
}
}
Tray.Icon = defIcon;
}