图像移动插件
在实际应用中,移动图片位置的需求可能出现在多种场景中。以下是一些常见的情况
1,文件整理与分类
场景:用户或系统生成的大量图片存储在一个文件夹中,需要根据特定规则(如日期、类型、主题等)进行分类整理。
示例:将拍摄的照片按年份或月份移动到不同的文件夹中。
2. 自动化工作流
场景:在自动化流程中,图片需要从一个处理阶段移动到下一个阶段。
图片上传到临时文件夹后,经过压缩或水印处理,再移动到正式存储文件夹。
图片从下载文件夹移动到编辑文件夹,供设计师处理。
3. 备份与归档
场景:将图片从活动文件夹移动到备份文件夹,以释放空间或归档旧数据。
示例:将一年前的图片从工作文件夹移动到归档文件夹。
4. 同步与分发
场景:在多设备或多用户环境中,图片需要从一个位置同步到另一个位置。
示例:将用户上传的图片从上传文件夹移动到共享文件夹,供其他用户访问。
将图片从本地文件夹移动到云存储或网络共享文件夹。
5. 图片处理后的存储
场景:图片经过处理后(如裁剪、滤镜、压缩等),需要移动到另一个文件夹。
示例:将处理后的图片从临时文件夹移动到发布文件夹。
6. 错误修复与重试
场景:图片因某种原因未能正确处理,需要移动到特定文件夹以便重新处理或检查。
示例:将格式不支持的图片移动到“错误”文件夹,或将未成功上传的图片移动到“重试”文件夹。
7. 权限管理
场景:根据用户权限或访问控制,将图片移动到不同的文件夹。
示例:将敏感图片移动到受保护的文件夹,或将公开图片移动到共享文件夹。
8. 图片分发与发布
场景:将图片从编辑或审核文件夹移动到发布文件夹,供最终用户访问。
示例:将审核通过的图片从“待发布”文件夹移动到“已发布”文件夹。
9. 临时存储清理
场景:将临时文件夹中的图片移动到正式存储位置,以避免占用过多空间。
示例:将用户上传的临时图片移动到永久存储文件夹。
10. 跨平台或跨设备传输
场景:将图片从一台设备或平台的文件夹移动到另一台设备或平台的文件夹。
示例:将手机中的图片移动到电脑的图片库中。
11. 图片分类与标记
场景:根据图片内容或元数据(如分辨率、拍摄设备、标签等)将图片移动到不同的文件夹。
示例:将高分辨率图片移动到“高清”文件夹,或将手机拍摄的图片移动到“手机照片”文件夹。
12. 防止重复处理
场景:将已处理的图片移动到另一个文件夹,以避免重复处理。
示例:将已压缩的图片移动到“已处理”文件夹。
13. 图片审核流程
场景:在图片审核流程中,将图片移动到不同的文件夹以表示其状态。
示例:将待审核的图片移动到“待审核”文件夹。将审核通过的图片移动到“已通过”文件夹。将审核未通过的图片移动到“未通过”文件夹。
14. 图片版本管理
场景:将不同版本的图片移动到不同的文件夹,以便管理历史版本。
示例:将旧版本的图片移动到“历史版本”文件夹。
15. 图片导出与共享
场景:将图片从内部文件夹移动到外部文件夹,以便导出或共享。
示例:将需要共享的图片移动到“共享”文件夹,或将需要导出的图片移动到“导出”文件夹。
演示Demo
源码
namespace Demo
{
public partial class Form1 : Form
{
private string FileObj;
private string FileDestination;
public Form1()
{
InitializeComponent();
}
private void uiButton1_Click(object sender, EventArgs e)
{
//创建文件夹浏览器控件对象
var dialog = new FolderBrowserDialog();
if (dialog.ShowDialog() == DialogResult.OK)
{
FileObj = dialog.SelectedPath;
//显示路径
tbx_Obj.Text = dialog.SelectedPath;
}
}
private void uiButton2_Click(object sender, EventArgs e)
{
//创建文件夹浏览器控件对象
var dialog = new FolderBrowserDialog();
if (dialog.ShowDialog() == DialogResult.OK)
{
FileDestination = dialog.SelectedPath;
//显示路径
tbx_Destination.Text = dialog.SelectedPath;
}
}
private void uiButton3_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
}
private void uiButton4_Click(object sender, EventArgs e)
{
timer1.Enabled = false;
}
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Enabled = false;
Action act;
DirectoryInfo di = new DirectoryInfo(FileObj);
try
{
// Determine whether the directory exists.
if (di.Exists)
{
int imgCount = Directory.GetFiles(FileObj).Length;
int cellCount = imgCount ; // 16;
act = delegate ()
{
labQuantity1.Text = cellCount.ToString() + "个";
};
this.Invoke(act);
}
}
catch (Exception ex)
{
}
DirectoryInfo di1 = new DirectoryInfo(FileDestination);
try
{
// Determine whether the directory exists.
if (di1.Exists)
{
int imgCount = Directory.GetFiles(FileDestination).Length;
int cellCount = imgCount; // 16;
act = delegate ()
{
labQuantity2.Text = cellCount.ToString() + "个";
};
this.Invoke(act);
}
}
catch (Exception ex)
{
}
moveFiles(FileObj, FileDestination);
timer1.Enabled = true;
}
private static void moveFiles(string srcFolder, string destFolder)
{
DirectoryInfo directoryInfo = new DirectoryInfo(srcFolder);
FileInfo[] files = directoryInfo.GetFiles();
foreach (FileInfo file in files) // Directory.GetFiles(srcFolder)
{
if (file.Extension == ".png" || file.Extension == ".jpg" || file.Extension == ".bmp")
{
file.MoveTo(Path.Combine(destFolder, file.Name));
}
}
}
}
}