- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在尝试从目录中删除文件时遇到问题,因为它说另一个进程正在使用一个文件。运行 cmdCombine 方法后,我不知道如何删除文件夹中的所有文件。这是代码,请提供一点帮助:
private void cmdCombine_Click(object sender, EventArgs e)
{
DirectoryInfo directory = new DirectoryInfo(@"C:\Users\Elder Zollinger\Desktop\Images");
if (directory != null)
{
FileInfo[] files = directory.GetFiles();
ResizeImages(files);
}
DirectoryInfo directory2 = new DirectoryInfo(@"C:\Users\Elder Zollinger\Desktop\Upload");
if (directory2 != null)
{
FileInfo[] files = directory2.GetFiles();
CombineImages(files);
System.IO.DirectoryInfo downloadedMessageInfo = new DirectoryInfo(@"C:\Users\Elder Zollinger\Desktop\Images");
foreach (FileInfo file2 in downloadedMessageInfo.GetFiles())
{
file2.Delete();
}
foreach (DirectoryInfo dir in downloadedMessageInfo.GetDirectories())
{
dir.Delete(true);
}
}
}
//Method for resizing the images
private void ResizeImages(FileInfo[] files)
{
//Set Count integers and strings to save files
int fileCount = Directory.GetFiles(@"C:\Users\Elder Zollinger\Desktop\Images").Length;
int count = 1;
string fileNameOnly = Path.GetFileNameWithoutExtension(@"C:\Users\Elder Zollinger\Desktop\Upload\NewImage.jpg");
string extension = Path.GetExtension(@"C:\Users\Elder Zollinger\Desktop\Upload\NewImage.jpg");
string uploadPath = Path.GetDirectoryName(@"C:\Users\Elder Zollinger\Desktop\Upload\NewImage.jpg");
string newFullUploadPath = @"C:\Users\Elder Zollinger\Desktop\Upload\NewImage.jpg";
//Read Files in the folder
foreach (FileInfo file in files)
{
//Create a new file name that doesnt exist
while (File.Exists(newFullUploadPath))
{
string tempFileName = string.Format("{0}({1})", fileNameOnly, count++);
newFullUploadPath = Path.Combine(uploadPath, tempFileName + extension);
}
//Resize and save images when there is more than 2
if (fileCount > 2)
{
Image img = Image.FromFile(file.FullName);
var newImage = resizeImage(img, new Size(66, 200));
newImage.Save(newFullUploadPath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
//Resize and save images for 1 or 2 images
else
{
Image img = Image.FromFile(file.FullName);
var newImage = resizeImage(img, new Size(100, 200));
newImage.Save(newFullUploadPath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
}
}
//Stitch Images
private void CombineImages(FileInfo[] files)
{
//Create strings for saved images
int count = 1;
string fileNameOnly = Path.GetFileNameWithoutExtension(@"C:\Users\Elder Zollinger\Desktop\Dump\Final.jpg");
string extension = Path.GetExtension(@"C:\Users\Elder Zollinger\Desktop\Dump\Final.jpg");
string uploadPath = Path.GetDirectoryName(@"C:\Users\Elder Zollinger\Desktop\Dump\Final.jpg");
string newFullUploadPath = @"C:\Users\Elder Zollinger\Desktop\Dump\Final.jpg";
List<int> imageHeights = new List<int>();
int nIndex = 0;
int width = 0;
foreach (FileInfo file in files)
{
Image img = Image.FromFile(file.FullName);
imageHeights.Add(img.Height);
width += img.Width;
img.Dispose();
}
imageHeights.Sort();
int height = imageHeights[imageHeights.Count - 1];
Bitmap img3 = new Bitmap(width, height);
Graphics g = Graphics.FromImage(img3);
g.Clear(SystemColors.AppWorkspace);
foreach (FileInfo file in files)
{
Image img = Image.FromFile(file.FullName);
if (nIndex == 0)
{
g.DrawImage(img, new Point(0, 0));
nIndex++;
width = img.Width;
}
else
{
g.DrawImage(img, new Point(width, 0));
width += img.Width;
}
img.Dispose();
}
g.Dispose();
while (File.Exists(newFullUploadPath))
{
string tempFileName = string.Format("{0}({1})", fileNameOnly, count++);
newFullUploadPath = Path.Combine(uploadPath, tempFileName + extension);
}
img3.Save(newFullUploadPath, System.Drawing.Imaging.ImageFormat.Jpeg);
img3.Dispose();
imageLocation.Image = Image.FromFile(newFullUploadPath);
foreach (FileInfo file in files)
{
file.Delete();
}
}
//Method to resize the images
private static Image resizeImage(Image imgToResize, Size size)
{
return (Image)(new Bitmap(imgToResize, size));
}
private void SelectImages_Click(object sender, EventArgs e)
{
Stream myStream = null;
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.InitialDirectory = "c:\\";
openFileDialog1.Filter = "png files (*.png)|*.png|All files (*.*)|*.*";
openFileDialog1.FilterIndex = 2;
openFileDialog1.RestoreDirectory = true;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
if ((myStream = openFileDialog1.OpenFile()) != null)
{
int count = 1;
string fileNameOnly = Path.GetFileNameWithoutExtension(@"C:\Users\Elder Zollinger\Desktop\Images\Companion.jpg");
string extension = Path.GetExtension(@"C:\Users\Elder Zollinger\Desktop\Images\Companion.jpg");
string uploadPath = Path.GetDirectoryName(@"C:\Users\Elder Zollinger\Desktop\Images\Companion.jpg");
string newFullUploadPath = @"C:\Users\Elder Zollinger\Desktop\Images\Companion.jpg";
while (File.Exists(newFullUploadPath))
{
string tempFileName = string.Format("{0}({1})", fileNameOnly, count++);
newFullUploadPath = Path.Combine(uploadPath, tempFileName + extension);
}
System.IO.File.Copy(openFileDialog1.FileName, newFullUploadPath);
}
}
}
private void Clear_Click(object sender, EventArgs e)
{
imageLocation.Image = null;
System.IO.DirectoryInfo downloadedMessageInfo = new DirectoryInfo(@"C:\Users\Elder Zollinger\Desktop\Images");
foreach (FileInfo file in downloadedMessageInfo.GetFiles())
{
file.Delete();
}
foreach (DirectoryInfo dir in downloadedMessageInfo.GetDirectories())
{
dir.Delete(true);
}
}
}
}
最佳答案
我怀疑这是问题所在:
Image img = Image.FromFile(file.FullName);
打开 文件 - 但您永远不会处理同一个对象,因此文件将一直打开,直到对象完成。 Image
实现了 IDisposable
,因此您应该使用 using
语句:
using (Image image = ...)
{
...
}
您还应该 处理调整大小的图像,尽管至少它不会占用文件句柄。
请注意,无论文件是否超过两个,您都得到了几乎完全相同的代码块。有条件地选择 just the size 会更干净:
Size size = fileCount > 2 ? new Size(66, 200) : new Size(100, 200);
using (Image original = Image.FromFile(file.FullName))
using (Image resized = ResizeImage(original, size))
{
resized.Save(newFullUploadPath, ImageFormat.Jpeg);
}
更清洁,IMO。
关于c# - 错误 : The process cannot access the file 'Companion.jpg' because it is being used by another process,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25344176/
我正在查看与 Akka 相关的类型安全激活器代码,以下构造引起了我的兴趣: 伴侣对象: object MarkerActor { sealed trait MarkerMessage case
我在所有 Jetpack compose 项目中多次收到此错误。此错误是否与 Gradle 相关?因为我没有对主题进行任何更改。 java.lang.NoSuchFieldError: No fiel
我第一次使用 Jetpack Compose,但出现此错误。我还没有弄清楚问题到底出在哪里,但我正在使用单 Activity 架构。如果需要更多信息,请告诉我。 根据错误,问题似乎来自脚手架。
在 Kotlin 中,如果我在带有 Companion. 的伴随对象中有一个函数作为前缀( Companion.foo ),它与 foo 相比有何不同?在伴生对象内? 我注意到在下面的代码中,Comp
一本书谈论string::size_type (这是 string.size() 类的 std::string 函数的返回类型)。 我不明白这些“同伴类型”是什么。有人能给我详细解释一下它们是什么吗?
阅读 Ordesky 关于 Scala 的书的第 20 章,我发现内部类是路径相关的。在其他特性中,这意味着它们只能在外部类中实例化或提供外部类实例。 问题来了:我想在 Scala 中实现一个stat
出于某种原因,我的应用程序图标从未出现在 中同伴 应用程序 苹果 watch . 图标出现在 iPhone 和 苹果 watch 仪表盘。 我提供了配套设置所需的 58*58(29*29@2x) 和
所以我是学习 Kotlin 的新手,来自 C# 背景。我一直在处理类型和其他一些事情。我正在尝试创建一个静态类“WalMartGreeters”,它可以将欢迎词添加到列表中,然后调用一个简单的静态函数
我是 GNUradio 的新手,我正在制作一个 FM 接收器。我正在将数据记录到文件接收器中。但是我只需要1毫秒的数据。我如何指定这个时间,以便我的流程图在这个时间之后自动停止? 我还阅读了一些关于调
如何计算特定带宽内信号的平均功率并将该值存储在一个变量中供以后引用? 例如,我有一个 15kHz 宽的低通滤波器,我想知道 GNU Radio Companion 中是否有一个工具可以让我计算特定时间
我有 2 个枚举 enum class Enum1{ X1, X2, X3, X4; companion object { val default = X2 }
如果我有一个看起来像这样的(简化的)类: class MyManager @JvmOverloads constructor(/*constructor args*/) : MyManagerInte
我正在使用 Companion library用于将视频从我的应用转换到 Chromecast。有什么办法可以添加字幕/隐藏式字幕切换按钮,以便用户能够打开和关闭它们吗? 我正在阅读他们的 docum
tl:博士;是否可以 import 另一个类的伴生对象内的方法,无需使用 Companion 限定导入?也就是说,假设 toFoo 是一种方法,我是否可以说 import Bar.toFoo 而不是
我正在尝试使用 GNURadio Companion GUI 创建一个分层 block 。我在其他帖子中找到的答案说选择要合并的 block ,然后转到“更多”->“创建层次”。然后应该会出现一个新屏
我遇到了 Companion Objects 选择其类型而不是 case 类的问题 我正在使用喷雾 json serdes。他们需要一个隐式的 JsonFormat。这种格式是通过调用一个依赖于案例类
在 IntelliJ IDEA 中,是否有键盘快捷键或导航快捷键可以在 Scala 伴侣之间跳转object和一个同伴 class ? 最佳答案 似乎答案是否定的,没有。 关于scala - Inte
我正在尝试使用 Cast Companion 库实现音量控制。不过,我有点困惑应该怎么做。 最初,我一直在使用 VideoCastManager.onDispatchVolumeKeyEvent,它运
我正在使用 Cast Companion Library,它大部分工作正常,我有迷你播放器,还有锁屏控件和播放内容的 Activity ,但我永远无法显示通知屏幕。初始化时我正在执行以下操作: mCa
我正在按照教程部署 Wordpress使用 Docker在 Ubuntu服务器。教程在这个website . 值得一提的是,此时我已经有两个子域,一个用于 Wordpress 站点,另一个用于 php
我是一名优秀的程序员,十分优秀!