Files
2022-04-21 21:43:45 +08:00

72 lines
1.9 KiB
C#

using System.Windows.Forms;
using FreeImageAPI;
using PDFPatcher.Common;
using PDFPatcher.Processor;
using PDFPatcher.Processor.Imaging;
namespace PDFPatcher.Functions
{
sealed partial class ImageViewerForm : Form
{
public ImageViewerForm() {
InitializeComponent();
}
internal ImageViewerForm(ImageInfo image, byte[] bytes) : this() {
this.SetIcon(Properties.Resources.ViewContent);
if (image.ExtName == Constants.FileExtensions.Png || image.ExtName == Constants.FileExtensions.Tif) {
using (FreeImageBitmap bmp = ImageExtractor.CreateFreeImageBitmap(image, ref bytes, false, true)) {
_ImageBox.Image = bmp.ToBitmap();
}
}
else {
try {
using (var s = new System.IO.MemoryStream(bytes)) {
using (FreeImageBitmap bmp = new FreeImageBitmap(s)) {
_ImageBox.Image = bmp.ToBitmap();
}
}
}
catch (System.Exception ex) {
this.ErrorBox("无法加载图片", ex);
}
}
}
protected override void OnClosed(System.EventArgs e) {
_ImageBox.Image.TryDispose();
base.OnClosed(e);
}
void _MainToolbar_ItemClicked(object sender, ToolStripItemClickedEventArgs e) {
var n = e.ClickedItem.Name;
switch (n) {
case "_Save":
using (var f = new SaveFileDialog {
Title = "保存图片文件",
DefaultExt = Constants.FileExtensions.Png,
FileName = "导出图片.png",
Filter = Constants.FileExtensions.ImageFilter
}) {
if (f.ShowDialog() == DialogResult.OK) {
try {
using (var fi = new FreeImageAPI.FreeImageBitmap(_ImageBox.Image)) {
fi.Save(f.FileName);
}
}
catch (System.Exception ex) {
FormHelper.ErrorBox(ex.Message);
}
}
}
break;
case "_ZoomReset":
_ImageBox.ActualSize(); break;
case "_FitWindow":
_ImageBox.ZoomToFit(); break;
default:
break;
}
}
}
}