还行
This commit is contained in:
parent
04a80e44e1
commit
3f5b853a9d
63
.gitattributes
vendored
Normal file
63
.gitattributes
vendored
Normal file
@ -0,0 +1,63 @@
|
||||
###############################################################################
|
||||
# Set default behavior to automatically normalize line endings.
|
||||
###############################################################################
|
||||
* text=auto
|
||||
|
||||
###############################################################################
|
||||
# Set default behavior for command prompt diff.
|
||||
#
|
||||
# This is need for earlier builds of msysgit that does not have it on by
|
||||
# default for csharp files.
|
||||
# Note: This is only used by command line
|
||||
###############################################################################
|
||||
#*.cs diff=csharp
|
||||
|
||||
###############################################################################
|
||||
# Set the merge driver for project and solution files
|
||||
#
|
||||
# Merging from the command prompt will add diff markers to the files if there
|
||||
# are conflicts (Merging from VS is not affected by the settings below, in VS
|
||||
# the diff markers are never inserted). Diff markers may cause the following
|
||||
# file extensions to fail to load in VS. An alternative would be to treat
|
||||
# these files as binary and thus will always conflict and require user
|
||||
# intervention with every merge. To do so, just uncomment the entries below
|
||||
###############################################################################
|
||||
#*.sln merge=binary
|
||||
#*.csproj merge=binary
|
||||
#*.vbproj merge=binary
|
||||
#*.vcxproj merge=binary
|
||||
#*.vcproj merge=binary
|
||||
#*.dbproj merge=binary
|
||||
#*.fsproj merge=binary
|
||||
#*.lsproj merge=binary
|
||||
#*.wixproj merge=binary
|
||||
#*.modelproj merge=binary
|
||||
#*.sqlproj merge=binary
|
||||
#*.wwaproj merge=binary
|
||||
|
||||
###############################################################################
|
||||
# behavior for image files
|
||||
#
|
||||
# image files are treated as binary by default.
|
||||
###############################################################################
|
||||
#*.jpg binary
|
||||
#*.png binary
|
||||
#*.gif binary
|
||||
|
||||
###############################################################################
|
||||
# diff behavior for common document formats
|
||||
#
|
||||
# Convert binary document formats to text before diffing them. This feature
|
||||
# is only available from the command line. Turn it on by uncommenting the
|
||||
# entries below.
|
||||
###############################################################################
|
||||
#*.doc diff=astextplain
|
||||
#*.DOC diff=astextplain
|
||||
#*.docx diff=astextplain
|
||||
#*.DOCX diff=astextplain
|
||||
#*.dot diff=astextplain
|
||||
#*.DOT diff=astextplain
|
||||
#*.pdf diff=astextplain
|
||||
#*.PDF diff=astextplain
|
||||
#*.rtf diff=astextplain
|
||||
#*.RTF diff=astextplain
|
BIN
.vs/HaoYue.Image2Thumbnail/DesignTimeBuild/.dtbcache
Normal file
BIN
.vs/HaoYue.Image2Thumbnail/DesignTimeBuild/.dtbcache
Normal file
Binary file not shown.
BIN
.vs/HaoYue.Image2Thumbnail/v15/Server/sqlite3/storage.ide
Normal file
BIN
.vs/HaoYue.Image2Thumbnail/v15/Server/sqlite3/storage.ide
Normal file
Binary file not shown.
BIN
.vs/HaoYue.Image2Thumbnail/v15/Server/sqlite3/storage.ide-shm
Normal file
BIN
.vs/HaoYue.Image2Thumbnail/v15/Server/sqlite3/storage.ide-shm
Normal file
Binary file not shown.
BIN
.vs/HaoYue.Image2Thumbnail/v15/Server/sqlite3/storage.ide-wal
Normal file
BIN
.vs/HaoYue.Image2Thumbnail/v15/Server/sqlite3/storage.ide-wal
Normal file
Binary file not shown.
25
HaoYue.Image2Thumbnail.sln
Normal file
25
HaoYue.Image2Thumbnail.sln
Normal file
@ -0,0 +1,25 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.27703.2026
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HaoYue.Image2Thumbnail", "HaoYue.Image2Thumbnail\HaoYue.Image2Thumbnail.csproj", "{2E03FC1D-AF90-4124-BFA0-29065513169B}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{2E03FC1D-AF90-4124-BFA0-29065513169B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2E03FC1D-AF90-4124-BFA0-29065513169B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2E03FC1D-AF90-4124-BFA0-29065513169B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2E03FC1D-AF90-4124-BFA0-29065513169B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {B70DB4FC-AC1A-4966-B361-5332ACF56311}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
17
HaoYue.Image2Thumbnail/App.xaml
Normal file
17
HaoYue.Image2Thumbnail/App.xaml
Normal file
@ -0,0 +1,17 @@
|
||||
<Application x:Class="HaoYue.Image2Thumbnail.App"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:HaoYue.Image2Thumbnail"
|
||||
StartupUri="MainWindow.xaml">
|
||||
<Application.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
|
||||
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
|
||||
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
|
||||
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" />
|
||||
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
</ResourceDictionary>
|
||||
</Application.Resources>
|
||||
</Application>
|
16
HaoYue.Image2Thumbnail/App.xaml.cs
Normal file
16
HaoYue.Image2Thumbnail/App.xaml.cs
Normal file
@ -0,0 +1,16 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Configuration;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
|
||||
namespace HaoYue.Image2Thumbnail
|
||||
{
|
||||
/// <summary>
|
||||
/// App.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class App : Application
|
||||
{
|
||||
}
|
||||
}
|
107
HaoYue.Image2Thumbnail/HaoYue.Image2Thumbnail.csproj
Normal file
107
HaoYue.Image2Thumbnail/HaoYue.Image2Thumbnail.csproj
Normal file
@ -0,0 +1,107 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{2E03FC1D-AF90-4124-BFA0-29065513169B}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>HaoYue.Image2Thumbnail</RootNamespace>
|
||||
<AssemblyName>HaoYue.Image2Thumbnail</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationIcon>
|
||||
</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="ControlzEx, Version=3.0.2.4, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\ControlzEx.3.0.2.4\lib\net40\ControlzEx.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="MahApps.Metro, Version=1.6.5.1, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\MahApps.Metro.1.6.5\lib\net40\MahApps.Metro.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Interactivity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\ControlzEx.3.0.2.4\lib\net40\System.Windows.Interactivity.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Xaml">
|
||||
<RequiredTargetFramework>4.0</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="WindowsBase" />
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="PresentationFramework" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ApplicationDefinition Include="App.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</ApplicationDefinition>
|
||||
<Page Include="MainWindow.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Compile Include="App.xaml.cs">
|
||||
<DependentUpon>App.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="MainWindow.xaml.cs">
|
||||
<DependentUpon>MainWindow.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Properties\AssemblyInfo.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
65
HaoYue.Image2Thumbnail/MainWindow.xaml
Normal file
65
HaoYue.Image2Thumbnail/MainWindow.xaml
Normal file
@ -0,0 +1,65 @@
|
||||
<controls:MetroWindow x:Class="HaoYue.Image2Thumbnail.MainWindow"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:HaoYue.Image2Thumbnail"
|
||||
xmlns:controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
|
||||
mc:Ignorable="d"
|
||||
Title="批量缩略图(压缩)工具 HaoYue.ImageTools Ver.1.0 (试用)" Height="395.065" Width="526.649" AllowDrop="True">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="43*"/>
|
||||
<RowDefinition Height="139*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<CheckBox x:Name="CheckBox_MaxMinWH" Checked="MaxMinWH_Checked" Unchecked="MaxMinWH_unChecked" Content="限制缩略图最大宽高:" HorizontalAlignment="Left" Margin="262,10,0,0" VerticalAlignment="Top" />
|
||||
<TextBox x:Name="Text_MaxW" PreviewTextInput="tb_PreviewTextInput" InputMethod.IsInputMethodEnabled="False" HorizontalAlignment="Left" Height="18" Margin="413,10,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="39" IsEnabled="False" FontSize="10"/>
|
||||
<TextBox x:Name="Text_MaxH" PreviewTextInput="tb_PreviewTextInput" InputMethod.IsInputMethodEnabled="False" HorizontalAlignment="Left" Height="23" Margin="465,10,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="39" IsEnabled="False" FontSize="10"/>
|
||||
|
||||
<Label Content="图片分辨率缩小倍率:" HorizontalAlignment="Left" Margin="10,7,0,0" VerticalAlignment="Top"/>
|
||||
<Label Content="{Binding ElementName=Slider_ReductionRatio,Path=Value}" HorizontalAlignment="Left" Margin="234,10,0,0" VerticalAlignment="Top"/>
|
||||
<Slider Name="Slider_ReductionRatio" Value="6" Ticks="2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20" IsSnapToTickEnabled="True" HorizontalAlignment="Left" Margin="140,12,0,0" VerticalAlignment="Top" Width="89" Minimum="2" Maximum="20"/>
|
||||
|
||||
<Label Content="处理方式:" HorizontalAlignment="Left" Margin="295,39,0,0" VerticalAlignment="Top"/>
|
||||
<TextBox HorizontalAlignment="Left" IsEnabled="False" Height="23" Margin="128,33,0,0" TextWrapping="Wrap" Text="<原文件名>_small.<扩展名>" VerticalAlignment="Top" Width="375" Grid.Row="1"/>
|
||||
<Label Content="输出图片命名规则:" HorizontalAlignment="Left" Margin="10,34,0,0" VerticalAlignment="Top" Grid.Row="1"/>
|
||||
|
||||
|
||||
<Grid HorizontalAlignment="Left" Background="#87CEFA" Height="139" Margin="9,67,0,0" VerticalAlignment="Top" Width="495"
|
||||
Grid.Row="1"
|
||||
Drop="FileDrop"
|
||||
/>
|
||||
<Label x:Name="label1" Content="请拖入要处理的图片或文件夹到这里" HorizontalAlignment="Left" Margin="29,118,0,0" VerticalAlignment="Top" FontSize="27"
|
||||
Grid.Row="1"
|
||||
Drop="FileDrop"
|
||||
/>
|
||||
|
||||
|
||||
<ProgressBar x:Name="myp" HorizontalAlignment="Left" Margin="111,215,0,0" VerticalAlignment="Top" Width="392" Height="14" Grid.Row="1"/>
|
||||
|
||||
<Label Content="处理进度:" HorizontalAlignment="Left" Margin="107,245,0,0" VerticalAlignment="Top" Grid.Row="1"/>
|
||||
<Label x:Name="myPercentage" Content=" - %" HorizontalAlignment="Left" Margin="165,245,0,0" VerticalAlignment="Top" Grid.Row="1"/>
|
||||
<Label Content="文件数量:" HorizontalAlignment="Left" Margin="201,245,0,0" VerticalAlignment="Top" Grid.Row="1"/>
|
||||
<Label x:Name="myFilePercentage" Content=" - / - " HorizontalAlignment="Left" Margin="271,245,0,0" VerticalAlignment="Top" Grid.Row="1"/>
|
||||
<Button x:Name="button_About" Click="adout" Content="说明" HorizontalAlignment="Left" Margin="9,214.623,0,0" VerticalAlignment="Top" Width="88" FontSize="20" Height="51" Grid.Row="1"/>
|
||||
<Slider x:Name="Slider_ThreadCount" IsEnabled="False" HorizontalAlignment="Left" Margin="140,42,0,0" VerticalAlignment="Top" Width="89" Minimum="1" Maximum="10"/>
|
||||
<Label Content="处理线程数量:" HorizontalAlignment="Left" Margin="10,39,0,0" VerticalAlignment="Top"/>
|
||||
<Label Content="{Binding ElementName=Slider_ThreadCount,Path=Value}" HorizontalAlignment="Left" Margin="234,39,0,0" VerticalAlignment="Top"/>
|
||||
<TextBox HorizontalAlignment="Left" Height="23" Margin="250,69,0,0" TextWrapping="Wrap" Text="D:/" VerticalAlignment="Top" Width="226" IsEnabled="False" Grid.RowSpan="2"/>
|
||||
<Label Content="处理信息:" HorizontalAlignment="Left" Margin="107,227,0,0" Grid.Row="1" VerticalAlignment="Top"/>
|
||||
<Label Name="Lable_SetFileInfo" Content="-" HorizontalAlignment="Left" Margin="165,227,0,0" Grid.Row="1" VerticalAlignment="Top" FontSize="9"/>
|
||||
<RadioButton Content="指定输出目录" IsEnabled="False" HorizontalAlignment="Left" Margin="148,71,0,0" VerticalAlignment="Top" Grid.RowSpan="2"/>
|
||||
<RadioButton Content="在原图同目录输出" HorizontalAlignment="Left" Margin="13,71,0,0" VerticalAlignment="Top" IsChecked="True" RenderTransformOrigin="0.867,1" Grid.RowSpan="2"/>
|
||||
<Button Content="..." HorizontalAlignment="Left" Margin="481,70,0,0" VerticalAlignment="Top" Width="26" Height="24" IsEnabled="False" Grid.RowSpan="2"/>
|
||||
<Label x:Name="label" Content="Powered by axibug.com - 皓月" HorizontalAlignment="Left" Margin="324,256,0,-3" VerticalAlignment="Top" Grid.Row="1"/>
|
||||
<CheckBox x:Name="CheckBox_IsDeleteSrcFile" IsEnabled ="False" Content="删除原图文件" HorizontalAlignment="Left" Margin="13,11,0,0" Grid.Row="1" VerticalAlignment="Top"/>
|
||||
<ComboBox x:Name="ComboBox_OutImagequality" HorizontalAlignment="Left" Margin="370,40,0,0" VerticalAlignment="Top" Width="139" Height="22">
|
||||
<ComboBoxItem IsSelected="True">默认质量</ComboBoxItem>
|
||||
<ComboBoxItem>高质量,低速度</ComboBoxItem>
|
||||
<ComboBoxItem>低质量,高速度</ComboBoxItem>
|
||||
<ComboBoxItem >假定线性值</ComboBoxItem>
|
||||
<ComboBoxItem>灰度修正</ComboBoxItem>
|
||||
</ComboBox>
|
||||
|
||||
</Grid>
|
||||
</controls:MetroWindow >
|
534
HaoYue.Image2Thumbnail/MainWindow.xaml.cs
Normal file
534
HaoYue.Image2Thumbnail/MainWindow.xaml.cs
Normal file
@ -0,0 +1,534 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
//引用
|
||||
using MahApps.Metro.Controls;
|
||||
using MahApps.Metro.Controls.Dialogs;
|
||||
using System.IO;
|
||||
using System.Security.Cryptography;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace HaoYue.Image2Thumbnail
|
||||
{
|
||||
/// <summary>
|
||||
/// MainWindow.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class MainWindow : MetroWindow
|
||||
{
|
||||
public int FileALLCount = 0;
|
||||
public int FinishedFileCount = 0;
|
||||
|
||||
//图片压缩比率
|
||||
public double ReductionRatio = 0;
|
||||
//图片压缩质量
|
||||
public int OutImagequality = 0;
|
||||
|
||||
public int ThreadCount = 0;
|
||||
|
||||
public bool IsSetMaxWH = false;
|
||||
|
||||
public int MaxW = 0;
|
||||
|
||||
public int MaxH = 0;
|
||||
|
||||
public bool IsDeleteSrcFile = false;
|
||||
|
||||
public DateTime StartDT;
|
||||
|
||||
public MainWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void MaxMinWH_Checked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Text_MaxW.IsEnabled = true;
|
||||
Text_MaxH.IsEnabled = true;
|
||||
Text_MaxH.Text = "480";
|
||||
Text_MaxW.Text = "640";
|
||||
}
|
||||
|
||||
private void MaxMinWH_unChecked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Text_MaxW.IsEnabled = false;
|
||||
Text_MaxH.IsEnabled = false;
|
||||
}
|
||||
|
||||
private void adout(object sender, RoutedEventArgs e)
|
||||
{
|
||||
this.ShowMessageAsync("批量缩略图(压缩)处理工具 XueyiImageTools Ver 1.0.0", "设置好您需要的设置(不设置默认也行)之后、\n拖入您需要处理的图片或者包含图片的文件夹即可", MessageDialogStyle.Affirmative, new MetroDialogSettings() { AffirmativeButtonText = "确定" });
|
||||
}
|
||||
|
||||
//文件拖拽
|
||||
private void FileDrop(object sender, DragEventArgs e)
|
||||
{
|
||||
|
||||
ReductionRatio = this.Slider_ReductionRatio.Value;
|
||||
switch (ComboBox_OutImagequality.Text)
|
||||
{
|
||||
case "默认质量":
|
||||
OutImagequality = 0;
|
||||
break;
|
||||
case "低质量,高速度":
|
||||
OutImagequality = 1;
|
||||
break;
|
||||
case "高质量,低速度":
|
||||
OutImagequality = 2;
|
||||
break;
|
||||
case "灰度修正":
|
||||
OutImagequality = 3;
|
||||
break;
|
||||
case "假定线性值":
|
||||
OutImagequality = 4;
|
||||
break;
|
||||
}
|
||||
ThreadCount = (int)this.Slider_ThreadCount.Value;
|
||||
IsSetMaxWH = (bool)this.CheckBox_MaxMinWH.IsChecked;
|
||||
if (IsSetMaxWH)
|
||||
{
|
||||
try
|
||||
{
|
||||
MaxH = Convert.ToInt32(this.Text_MaxH.Text);
|
||||
MaxW = Convert.ToInt32(this.Text_MaxW.Text);
|
||||
}
|
||||
catch
|
||||
{
|
||||
new Thread(() =>
|
||||
{
|
||||
this.Dispatcher.Invoke(new Action(() =>
|
||||
{
|
||||
this.ShowMessageAsync("错误!", "使用尺寸限制、请正确填写尺寸大小限制".ToString(), MessageDialogStyle.Affirmative, new MetroDialogSettings() { AffirmativeButtonText = "确定" });
|
||||
}));
|
||||
}).Start();
|
||||
return;
|
||||
}
|
||||
}
|
||||
IsDeleteSrcFile = (bool)this.CheckBox_IsDeleteSrcFile.IsChecked;
|
||||
Thread t = new Thread(delegate ()
|
||||
{
|
||||
SetAsyncFile(e);
|
||||
});
|
||||
t.Start();
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void SetAsyncFile(DragEventArgs e)
|
||||
{
|
||||
|
||||
StartDT = DateTime.Now;
|
||||
|
||||
//统计文件数量先
|
||||
FileALLCount = 0;
|
||||
FinishedFileCount = 0;
|
||||
|
||||
|
||||
for (int i = 0; i < ((System.Array)e.Data.GetData(DataFormats.FileDrop)).Length; i++)
|
||||
{
|
||||
string fileName = ((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(i).ToString();
|
||||
//然后你要做的事情
|
||||
if (Directory.Exists(fileName))//是文件夹的情况
|
||||
{
|
||||
FileALLCount += GetDirWithDirGetNumber(fileName);
|
||||
}
|
||||
else if (File.Exists(fileName))//是文件的情况
|
||||
{
|
||||
switch (fileName.Substring(fileName.LastIndexOf(".") + 1).ToLower())
|
||||
{
|
||||
case "jpeg":
|
||||
case "jpg":
|
||||
case "png":
|
||||
case "bmp":
|
||||
case "gif":
|
||||
case "wmf":
|
||||
FileALLCount++;
|
||||
break;
|
||||
default:
|
||||
continue;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SetmyFilePercentage();
|
||||
|
||||
//处理
|
||||
int index = 0;
|
||||
for (int i = 0; i < ((System.Array)e.Data.GetData(DataFormats.FileDrop)).Length; i++)
|
||||
{
|
||||
string fileName = ((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(i).ToString();
|
||||
//然后你要做的事情
|
||||
if (Directory.Exists(fileName))//是文件夹的情况
|
||||
{
|
||||
GetDirWithDir(fileName);
|
||||
}
|
||||
else if (File.Exists(fileName))//是文件的情况
|
||||
{
|
||||
|
||||
//单个文件处理
|
||||
OneImageSet(fileName);
|
||||
}
|
||||
index++;
|
||||
if (index % 20 == 0)
|
||||
{
|
||||
GC.Collect();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
new Thread(() =>
|
||||
{
|
||||
this.Dispatcher.Invoke(new Action(() =>
|
||||
{
|
||||
this.ShowMessageAsync("处理完毕!", "共处理" + FinishedFileCount + "个文件 耗时:" + (DateTime.Now - StartDT).ToString(), MessageDialogStyle.Affirmative, new MetroDialogSettings() { AffirmativeButtonText = "确定" });
|
||||
}));
|
||||
}).Start();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 遍历文件夹下的文件总数
|
||||
/// </summary>
|
||||
/// <param name="diruriFullName"></param>
|
||||
/// <returns></returns>
|
||||
public int GetDirWithDirGetNumber(string diruriFullName)
|
||||
{
|
||||
int filecount = 0;
|
||||
DirectoryInfo dir = new DirectoryInfo(diruriFullName);
|
||||
var Directories = dir.GetDirectories();
|
||||
//当前目录下的目录
|
||||
foreach (var d in Directories)
|
||||
{
|
||||
filecount += GetDirWithDirGetNumber(d.FullName);
|
||||
}
|
||||
Directories = null;
|
||||
|
||||
//当前目录下的文件
|
||||
DirectoryInfo dirinfo = new DirectoryInfo(diruriFullName);
|
||||
|
||||
int count = 0;
|
||||
foreach (var f in dir.GetFiles())
|
||||
{
|
||||
switch (f.FullName.Substring(f.FullName.LastIndexOf(".") + 1).ToLower())
|
||||
{
|
||||
case "jpeg":
|
||||
case "jpg":
|
||||
case "png":
|
||||
case "bmp":
|
||||
case "gif":
|
||||
case "wmf":
|
||||
count++;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
filecount += count;
|
||||
return filecount;
|
||||
}
|
||||
|
||||
|
||||
public void SetFileInfo(string FileInfo)
|
||||
{
|
||||
new Thread(
|
||||
delegate ()
|
||||
{
|
||||
this.Dispatcher.Invoke(new Action(() =>
|
||||
Lable_SetFileInfo.Content = FileInfo
|
||||
));
|
||||
}
|
||||
).Start();
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 更新文件处理数量和总数量
|
||||
/// </summary>
|
||||
/// <param name="FileInfo"></param>
|
||||
public void SetmyFilePercentage()
|
||||
{
|
||||
new Thread(
|
||||
delegate ()
|
||||
{
|
||||
this.Dispatcher.Invoke(new Action(() =>
|
||||
myFilePercentage.Content = FinishedFileCount + " / " + FileALLCount
|
||||
|
||||
));
|
||||
|
||||
this.Dispatcher.Invoke(new Action(() =>
|
||||
myp.Value = ((double)FinishedFileCount / (double)FileALLCount * 100)
|
||||
));
|
||||
|
||||
this.Dispatcher.Invoke(new Action(() =>
|
||||
myPercentage.Content = (int)myp.Value + "%"
|
||||
));
|
||||
}
|
||||
).Start();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public class tImageReturn
|
||||
{
|
||||
public int smallWidth { get; set; }
|
||||
public int smallHeight { get; set; }
|
||||
public string smallImagePath { get; set; }
|
||||
}
|
||||
|
||||
|
||||
public void GetDirWithDir(string diruriFullName)
|
||||
{
|
||||
DirectoryInfo dir = new DirectoryInfo(diruriFullName);
|
||||
var Directories = dir.GetDirectories();
|
||||
//当前目录下的目录
|
||||
foreach (var d in Directories)
|
||||
{
|
||||
GetDirWithDir(d.FullName);
|
||||
GC.Collect();
|
||||
}
|
||||
Directories = null;
|
||||
//当前目录下的文件
|
||||
SetDirALLSmallImageToFile(diruriFullName);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void SetDirALLSmallImageToFile(string diruriFullName)
|
||||
{
|
||||
DirectoryInfo dir = new DirectoryInfo(diruriFullName);
|
||||
var files = dir.GetFiles();
|
||||
int index = 0;
|
||||
foreach (var f in files)
|
||||
{
|
||||
if(OneImageSet(f.FullName))
|
||||
index++;
|
||||
if (index % 20 == 0)
|
||||
{
|
||||
GC.Collect();
|
||||
}
|
||||
}
|
||||
|
||||
files = null;
|
||||
}
|
||||
|
||||
public bool OneImageSet(string FileFullName)
|
||||
{
|
||||
|
||||
SetFileInfo(FileFullName);
|
||||
//if (File.Exists(
|
||||
// f.FullName.Substring(0, f.FullName.LastIndexOf(".")) + "_s0" + f.FullName.Substring(f.FullName.LastIndexOf("."))
|
||||
// ))
|
||||
//{
|
||||
// //continue;
|
||||
// return false;
|
||||
//}
|
||||
|
||||
//if (f.Name.Contains("_s0" + f.Name.Substring(f.Name.LastIndexOf("."))))
|
||||
//{
|
||||
// //continue;
|
||||
|
||||
// return false;
|
||||
//}
|
||||
|
||||
switch (FileFullName.Substring(FileFullName.LastIndexOf(".") + 1).ToLower())
|
||||
{
|
||||
case "jpeg":
|
||||
case "jpg":
|
||||
case "png":
|
||||
case "bmp":
|
||||
case "gif":
|
||||
case "wmf":
|
||||
break;
|
||||
default:
|
||||
//continue;
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
System.Drawing.Image img = System.Drawing.Image.FromFile(FileFullName);
|
||||
var height = img.Height;
|
||||
var Width = img.Width;
|
||||
|
||||
tImageReturn tp;
|
||||
//if (height < 600 || Width < 600)
|
||||
// tp = tImage(FileFullName, Width / 2, height / 2);//制作缩略图
|
||||
//else
|
||||
// tp = tImage(FileFullName, Width / 6, height / 6);//制作缩略图
|
||||
|
||||
|
||||
int smallW = Width / (int)ReductionRatio;
|
||||
int smallH = height / (int)ReductionRatio;
|
||||
|
||||
if (IsSetMaxWH)
|
||||
{
|
||||
if (smallW > MaxW || smallH > MaxH)
|
||||
{
|
||||
//获取第一张绘制图的大小,(比较 原图的宽/缩略图的宽 和 原图的高/缩略图的高)
|
||||
if (((decimal)MaxW) / smallW >= ((decimal)MaxH) / smallH)
|
||||
{
|
||||
smallH = MaxH;
|
||||
smallW = (int)((Width * MaxH) / height);
|
||||
}
|
||||
else
|
||||
{
|
||||
smallW = MaxW;
|
||||
smallH = (int)((MaxW * height) / Width);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tp = tImage(FileFullName,smallW,smallH);//制作缩略图
|
||||
|
||||
|
||||
|
||||
FinishedFileCount++;
|
||||
SetmyFilePercentage();
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 根据路径生成缩略图片
|
||||
/// </summary>
|
||||
/// <param name="filePath">源图片的完整路径</param>
|
||||
/// <param name="_width">缩略图的宽</param>
|
||||
/// <param name="_height">高</param>
|
||||
/// <returns></returns>
|
||||
public tImageReturn tImage(string filePath, int _width, int _height)
|
||||
{
|
||||
|
||||
try
|
||||
{
|
||||
using (System.Drawing.Image sourceImage = System.Drawing.Image.FromFile(filePath))
|
||||
{
|
||||
//原图宽度和高度
|
||||
int width = sourceImage.Width;
|
||||
int height = sourceImage.Height;
|
||||
int smallWidth = _width;
|
||||
int smallHeight = _height;
|
||||
|
||||
////获取第一张绘制图的大小,(比较 原图的宽/缩略图的宽 和 原图的高/缩略图的高)
|
||||
//if (((decimal)width) / _width >= ((decimal)height) / _height)
|
||||
//{
|
||||
// smallWidth = _width;
|
||||
// smallHeight = (int)((double)height / ((double)width / (double)_width));
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// smallWidth = (int)((double)width / ((double)height / (double)_height));
|
||||
// smallHeight = _height;
|
||||
//}
|
||||
|
||||
//判断缩略图在当前文件夹下是否同名称文件存在
|
||||
//缩略图保存的绝对路径
|
||||
string smallImagePath = ExistsOrCreateFile(filePath);
|
||||
// string smallImagePath = HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["PhotoPath"]);
|
||||
//新建一个图板,以最小等比例压缩大小绘制原图
|
||||
using (System.Drawing.Image bitmap = new System.Drawing.Bitmap(smallWidth, smallHeight))
|
||||
{
|
||||
using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap))
|
||||
{
|
||||
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
|
||||
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
|
||||
g.CompositingQuality = (System.Drawing.Drawing2D.CompositingQuality)OutImagequality;
|
||||
g.Clear(System.Drawing.Color.Black);
|
||||
g.DrawImage(
|
||||
sourceImage,
|
||||
new System.Drawing.Rectangle(-2, -2, smallWidth + 2, smallHeight + 2),
|
||||
new System.Drawing.Rectangle(0, 0, width, height),
|
||||
System.Drawing.GraphicsUnit.Pixel
|
||||
);
|
||||
g.Dispose();
|
||||
bitmap.Save(smallImagePath, System.Drawing.Imaging.ImageFormat.Jpeg);
|
||||
}
|
||||
}
|
||||
tImageReturn tir = new tImageReturn();
|
||||
tir.smallHeight = smallHeight;
|
||||
tir.smallWidth = smallWidth;
|
||||
tir.smallImagePath = System.IO.Path.GetFileName(smallImagePath);
|
||||
return tir;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 判断制定路径下是否存在新文件
|
||||
/// </summary>
|
||||
/// <param name="fullPath">源文件的完整路径</param>
|
||||
/// <returns>新文件的完整路径</returns>
|
||||
private string ExistsOrCreateFile(string fullPath)
|
||||
{
|
||||
int num = 0;
|
||||
string fileName = System.IO.Path.GetFileNameWithoutExtension(fullPath);
|
||||
string extendName = System.IO.Path.GetExtension(fullPath);
|
||||
string path = System.IO.Path.GetDirectoryName(fullPath);
|
||||
|
||||
StringBuilder newPath = new StringBuilder();
|
||||
|
||||
while (true)
|
||||
{
|
||||
newPath.Length = 0;
|
||||
|
||||
newPath.Append(path + "\\");
|
||||
|
||||
//string[] sArray = fileName.Split('.');
|
||||
//newPath.Append(sArray[0]);
|
||||
|
||||
|
||||
newPath.Append(fileName);
|
||||
newPath.Append("_small" + num);
|
||||
|
||||
//newPath.Append(sArray[1]);
|
||||
|
||||
newPath.Append(extendName);
|
||||
|
||||
if (!System.IO.File.Exists(newPath.ToString()))
|
||||
break;
|
||||
|
||||
num++;
|
||||
}
|
||||
|
||||
return newPath.ToString();
|
||||
}
|
||||
|
||||
private void tb_PreviewTextInput(object sender, TextCompositionEventArgs e)
|
||||
{
|
||||
System.Text.RegularExpressions.Regex re = new System.Text.RegularExpressions.Regex("[^0-9]");
|
||||
|
||||
e.Handled = re.IsMatch(e.Text);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//public void SetFileInfoLabel(string FileInfo)
|
||||
//{
|
||||
// new Thread()
|
||||
// { }.Start();
|
||||
//}
|
||||
|
||||
|
||||
}
|
||||
}
|
55
HaoYue.Image2Thumbnail/Properties/AssemblyInfo.cs
Normal file
55
HaoYue.Image2Thumbnail/Properties/AssemblyInfo.cs
Normal file
@ -0,0 +1,55 @@
|
||||
using System.Reflection;
|
||||
using System.Resources;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows;
|
||||
|
||||
// 有关程序集的一般信息由以下
|
||||
// 控制。更改这些特性值可修改
|
||||
// 与程序集关联的信息。
|
||||
[assembly: AssemblyTitle("HaoYue.Image2Thumbnail")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("HaoYue.Image2Thumbnail")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2018")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// 将 ComVisible 设置为 false 会使此程序集中的类型
|
||||
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
|
||||
//请将此类型的 ComVisible 特性设置为 true。
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
//若要开始生成可本地化的应用程序,请设置
|
||||
//.csproj 文件中的 <UICulture>CultureYouAreCodingWith</UICulture>
|
||||
//例如,如果您在源文件中使用的是美国英语,
|
||||
//使用的是美国英语,请将 <UICulture> 设置为 en-US。 然后取消
|
||||
//对以下 NeutralResourceLanguage 特性的注释。 更新
|
||||
//以下行中的“en-US”以匹配项目文件中的 UICulture 设置。
|
||||
|
||||
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
|
||||
|
||||
|
||||
[assembly: ThemeInfo(
|
||||
ResourceDictionaryLocation.None, //主题特定资源词典所处位置
|
||||
//(未在页面中找到资源时使用,
|
||||
//或应用程序资源字典中找到时使用)
|
||||
ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置
|
||||
//(未在页面中找到资源时使用,
|
||||
//、应用程序或任何主题专用资源字典中找到时使用)
|
||||
)]
|
||||
|
||||
|
||||
// 程序集的版本信息由下列四个值组成:
|
||||
//
|
||||
// 主版本
|
||||
// 次版本
|
||||
// 生成号
|
||||
// 修订号
|
||||
//
|
||||
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
|
||||
// 方法是按如下所示使用“*”: :
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
71
HaoYue.Image2Thumbnail/Properties/Resources.Designer.cs
generated
Normal file
71
HaoYue.Image2Thumbnail/Properties/Resources.Designer.cs
generated
Normal file
@ -0,0 +1,71 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 此代码由工具生成。
|
||||
// 运行时版本: 4.0.30319.42000
|
||||
//
|
||||
// 对此文件的更改可能导致不正确的行为,如果
|
||||
// 重新生成代码,则所做更改将丢失。
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace HaoYue.Image2Thumbnail.Properties
|
||||
{
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 强类型资源类,用于查找本地化字符串等。
|
||||
/// </summary>
|
||||
// 此类是由 StronglyTypedResourceBuilder
|
||||
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
|
||||
// 若要添加或删除成员,请编辑 .ResX 文件,然后重新运行 ResGen
|
||||
// (以 /str 作为命令选项),或重新生成 VS 项目。
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources
|
||||
{
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 返回此类使用的缓存 ResourceManager 实例。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager
|
||||
{
|
||||
get
|
||||
{
|
||||
if ((resourceMan == null))
|
||||
{
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HaoYue.Image2Thumbnail.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 覆盖当前线程的 CurrentUICulture 属性
|
||||
/// 使用此强类型的资源类的资源查找。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture
|
||||
{
|
||||
get
|
||||
{
|
||||
return resourceCulture;
|
||||
}
|
||||
set
|
||||
{
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
117
HaoYue.Image2Thumbnail/Properties/Resources.resx
Normal file
117
HaoYue.Image2Thumbnail/Properties/Resources.resx
Normal file
@ -0,0 +1,117 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
30
HaoYue.Image2Thumbnail/Properties/Settings.Designer.cs
generated
Normal file
30
HaoYue.Image2Thumbnail/Properties/Settings.Designer.cs
generated
Normal file
@ -0,0 +1,30 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace HaoYue.Image2Thumbnail.Properties
|
||||
{
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
|
||||
{
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default
|
||||
{
|
||||
get
|
||||
{
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
7
HaoYue.Image2Thumbnail/Properties/Settings.settings
Normal file
7
HaoYue.Image2Thumbnail/Properties/Settings.settings
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
5
HaoYue.Image2Thumbnail/packages.config
Normal file
5
HaoYue.Image2Thumbnail/packages.config
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="ControlzEx" version="3.0.2.4" targetFramework="net40" />
|
||||
<package id="MahApps.Metro" version="1.6.5" targetFramework="net40" />
|
||||
</packages>
|
Loading…
Reference in New Issue
Block a user