private void ProcessItem(string iconPath) { var icofile = GetTempPath() + ChangeExtension(GetFileName(iconPath), "png"); var extension = GetExtension(iconPath); var destfile = ChangeExtension(icofile, GetExtension(icofile)); if (extension == null) { return; } extension = extension.ToLower(); if (extension.Equals(".jpg")) { try { if (Exists(destfile)) { SetAttributes(destfile, FileAttributes.Normal); Delete(destfile); } Copy(iconPath, destfile, true); SetAttributes(destfile, FileAttributes.Normal); if (!IconConvert.ConvertToIcon(destfile, ChangeExtension(destfile, "ico"))) { Dispose(); } } catch (Exception ex) { MessageBox.Show(this, ex.Message); } } if (Exists(destfile)) { Pics.Add(destfile); Pics.Add(ChangeExtension(destfile, "ico")); using (var temp = new Bitmap(destfile)) pictureBox1.Image = new Bitmap(temp); } else { if (!extension.Equals(".dll")) { destfile = iconPath; var img = Image.FromFile(destfile); pictureBox1.Image = img; } else { Icone_textBox.Text = ""; } } }
private void Local_backgroundWorker_DoWork(object sender, DoWorkEventArgs e) { var filename = e.Argument as string; var icofile = GetTempPath() + ChangeExtension(GetFileName(filename), "png"); Icone_textBox.Invoke(new MethodInvoker(delegate { Icone_textBox.Text = filename; })); var file = GetFileNameWithoutExtension(e.Argument.ToString()); var dir = GetDirectoryName(filename); var extension = GetExtension(filename); //var name = $@"{dir}\{file + _mRnd}{extension}"; var name = $@"{dir}\{file}{extension}"; var viewer = new Viewer(name); var destfile = ChangeExtension(icofile, GetExtension(filename)); if (extension == null) { return; } extension = extension.ToLower(); if (extension.Equals(".jpg") || extension.Equals(".jpeg") || extension.Equals(".png") || extension.Equals(".bmp")) { try { if (Exists(destfile)) { SetAttributes(destfile, FileAttributes.Normal); Delete(destfile); } Copy(filename, destfile, true); SetAttributes(destfile, FileAttributes.Normal); if (!IconConvert.ConvertToIcon(destfile, ChangeExtension(destfile, "ico"))) { Dispose(); } } catch (Exception ex) { Invoke(new MethodInvoker(delegate { MessageBox.Show(this, ex.Message); })); } } else if (extension.Equals(".dll") || extension.Equals(".exe")) { var ico = DialogResult.None; var iconPick = new IconPickerDialog { FileName = filename }; Invoke(new MethodInvoker(delegate { ico = iconPick.ShowDialog(this); })); if (ico == DialogResult.OK) { var fileName = iconPick.FileName; var index = iconPick.IconIndex; Icon icon; Icon[] splitIcons; try { var extractor = new IconExtractor(fileName); icon = extractor.GetIcon(index); splitIcons = IconUtil.Split(icon); } catch (Exception ex) { MessageBox.Show(this, ex.Message, Text, MessageBoxButtons.OK, MessageBoxIcon.Error); return; } Icone_textBox.Text = string.Format(fileName); // Update icons. icon.Dispose(); var viewerList = viewer.list; viewerList.BeginUpdate(); foreach (var i in splitIcons) { var item = new Viewer.IconListViewItem(); var size = i.Size; var bits = IconUtil.GetBitCount(i); item.ToolTipText = $"{size.Width}x{size.Height}, {bits} bits"; item.Bitmap = IconUtil.ToBitmap(i); i.Dispose(); viewerList.Items.Add(item); } viewer.ShowDialog(); var exit = viewer.Exit; viewerList.EndUpdate(); if (!exit) { destfile = GetTempPath() + GetFileName(ChangeExtension(name, @"png")); if (!IconConvert.ConvertToIcon(destfile, ChangeExtension(destfile, "ico"))) { Dispose(); } } else { //Folder_textBox.Text = ""; Icone_textBox.Text = ""; if (pictureBox1.Image == null) { return; } pictureBox1.Image.Dispose(); pictureBox1.Image = null; } } } if (Exists(destfile)) { if (!Pics.Contains(destfile)) { Pics.Add(destfile); } if (!Pics.Contains(ChangeExtension(destfile, "ico"))) { Pics.Add(ChangeExtension(destfile, "ico")); } if (!Pics.Contains(ChangeExtension(destfile, "png"))) { Pics.Add(ChangeExtension(destfile, "png")); } using (var temp = new Bitmap(destfile)) pictureBox1.Image = new Bitmap(temp); } else { if (!extension.Equals(".dll")) { destfile = filename; var img = Image.FromFile(destfile); pictureBox1.Image = img; } else { Icone_textBox.Text = ""; } } if (Icone_textBox.Text != "") { Set.Invoke(new MethodInvoker(delegate { Set.Enabled = true; })); } }