我在这里要做的是:
我已经实现了一切,但不是最后一步。我收到“正在使用中的文件”错误。
这是代码:
filenameb = "img-1b.jpg";//old img
fullpathb = Path.Combine(dir, filenameb);//old img path
//downloading using imglink
client.DownloadFile(imglink, fullpathb);//save old img as %dir%\img-1b.jpg
//until here I downloaded the "old" img
filename = "img-1.jpg";//new img
fullpath = Path.Combine(dir, filename);//new img path
//name and fullpath for the "new img" are set
Image imgresize = Image.FromFile(fullpathb);//give old img path
imgresize = FixedSize(imgresize);//resize
imgresize.Save(fullpath, ImageFormat.Jpeg);//save new img as %dir%\img-1.jpg
//EVERYTHING WORKS PERFECTLY UP TO HERE
imgresize.Dispose();//dispose -has old img path
System.IO.File.Delete(fullpathb);//delete old img
我还将图像配置在FixedSize中。 如果需要,这是“FixedSize”的代码:
//kind of messed up to save some space
static Image FixedSize(Image imgPhoto)
{
int Width = 300;int Height = 250;
int sourceWidth = imgPhoto.Width;int sourceHeight = imgPhoto.Height;
int sourceX = 0;int sourceY = 0;int destX = 0;int destY = 0;
float nPercent = 0;float nPercentW = 0;float nPercentH = 0;
nPercentW = ((float)Width / (float)sourceWidth);
nPercentH = ((float)Height / (float)sourceHeight);
if (nPercentH < nPercentW){ nPercent = nPercentH;
destX = (int)((Width - (sourceWidth * nPercent)) / 2);}
else { nPercent = nPercentW;
destY = (int)((Height - (sourceHeight * nPercent)) / 2); }
int destWidth = (int)(sourceWidth * nPercent);
int destHeight = (int)(sourceHeight * nPercent);
Bitmap bmPhoto = new Bitmap(Width, Height, PixelFormat.Format24bppRgb);
bmPhoto.SetResolution(imgPhoto.HorizontalResolution, imgPhoto.VerticalResolution);
Graphics grPhoto = Graphics.FromImage(bmPhoto);
grPhoto.Clear(Color.White);
grPhoto.InterpolationMode = InterpolationMode.HighQualityBicubic;
grPhoto.DrawImage(imgPhoto,
new Rectangle(destX, destY, destWidth, destHeight),
new Rectangle(sourceX, sourceY, sourceWidth, sourceHeight),
GraphicsUnit.Pixel);
grPhoto.Dispose();
return bmPhoto;
}
我真的很陌生,我无法意识到我做错了什么(或者我根本不做什么)。任何帮助表示赞赏!
答案 0 :(得分:0)
Image imgresize = Image.FromFile(fullpathb)
这将锁定文件。而是从MemoryStream中创建一个从文件
读取的字节的图像byte[] imageBytes = FileReadAllBytes(fullpathb);
using (var ms = new MemoryStream(imageBytes)){
var image = Image.FromStream(ms);
}
未测试