mirror of
https://github.com/QL-Win/QuickLook.git
synced 2025-09-11 09:49:07 +00:00
Dispose Bitmap after have converted to BitmapSource
This commit is contained in:
@@ -2,7 +2,6 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Imaging;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
@@ -37,12 +36,8 @@ namespace QuickLook.Plugin.PDFViewer
|
||||
return foundElement;
|
||||
}
|
||||
|
||||
[DllImport("gdi32")]
|
||||
private static extern int DeleteObject(IntPtr o);
|
||||
|
||||
public static BitmapSource ToBitmapSource(this Bitmap source)
|
||||
{
|
||||
var ip = source.GetHbitmap();
|
||||
BitmapSource bs = null;
|
||||
try
|
||||
{
|
||||
@@ -57,9 +52,9 @@ namespace QuickLook.Plugin.PDFViewer
|
||||
|
||||
bs.Freeze();
|
||||
}
|
||||
finally
|
||||
catch
|
||||
{
|
||||
DeleteObject(ip);
|
||||
// ignored
|
||||
}
|
||||
|
||||
return bs;
|
||||
|
@@ -11,7 +11,7 @@ namespace QuickLook.Plugin.PDFViewer
|
||||
if (values.Length < 2)
|
||||
throw new Exception("PageIdToImageConverter");
|
||||
|
||||
var zoom = 0.5f;
|
||||
var zoom = 0.3f;
|
||||
if (parameter != null)
|
||||
float.TryParse((string) parameter, out zoom);
|
||||
|
||||
@@ -21,7 +21,13 @@ namespace QuickLook.Plugin.PDFViewer
|
||||
var pageId = (int) values[1];
|
||||
if (pageId < 0) return null;
|
||||
|
||||
return handle.GetPage(pageId, zoom).ToBitmapSource();
|
||||
var bitmap = handle.GetPage(pageId, zoom);
|
||||
var bs = bitmap.ToBitmapSource();
|
||||
bitmap.Dispose();
|
||||
|
||||
GC.Collect(GC.MaxGeneration, GCCollectionMode.Optimized);
|
||||
|
||||
return bs;
|
||||
}
|
||||
|
||||
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
|
||||
|
@@ -23,7 +23,7 @@
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<ListBox x:Name="listThumbnails" Grid.Column="0" VirtualizingPanel.ScrollUnit="Item"
|
||||
ScrollViewer.IsDeferredScrollingEnabled="False"
|
||||
VirtualizingPanel.IsVirtualizing="True"
|
||||
SelectedIndex="0"
|
||||
Focusable="False"
|
||||
Background="#00FFFFFF"
|
||||
|
@@ -143,7 +143,9 @@ namespace QuickLook.Plugin.PDFViewer
|
||||
if (!PdfLoaded)
|
||||
return;
|
||||
|
||||
var image = PdfHandle.GetPage(CurrentPage, ZoomFactor).ToBitmapSource();
|
||||
var bitmap = PdfHandle.GetPage(CurrentPage, ZoomFactor);
|
||||
var image = bitmap.ToBitmapSource();
|
||||
bitmap.Dispose();
|
||||
|
||||
pageViewPanelImage.Source = image;
|
||||
pageViewPanelImage.Width = pageViewPanelImage.Source.Width;
|
||||
|
Reference in New Issue
Block a user