Как переименовать изображение - PullRequest
1 голос
/ 05 июня 2011

У меня есть изображение, person1.png и четыре других изображения, person2.png, person3.png, person5.png и person4.png. Я хочу переименовать эти изображения в коде C #. Как бы я это сделал?

Ответы [ 4 ]

3 голосов
/ 06 июня 2011

Поскольку файлы PNG находятся в вашем XAP, вы можете сохранить их в своем изолированном хранилище следующим образом:

//make sure PNG_IMAGE is set as 'Content' build type
var pngStream= Application.GetResourceStream(new Uri(PNG_IMAGE, UriKind.Relative)).Stream;

int counter;
byte[] buffer = new byte[1024];
using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
{
   using (IsolatedStorageFileStream isfs = new IsolatedStorageFileStream(IMAGE_NAME, FileMode.Create, isf))
   {
      counter = 0;
      while (0 < (counter = pngStream.Read(buffer, 0, buffer.Length)))
      {
             isfs.Write(buffer, 0, counter);
      }    

      pngStream.Close();

    }
 }

Здесь вы можете сохранить его под любым именем, изменив IMAGE_NAME.

Чтобы прочитать это снова, вы можете сделать это:

byte[] streamData;    

using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
{
     using (IsolatedStorageFileStream isfs = isf.OpenFile("image.png", FileMode.Open, FileAccess.Read))
     {
          streamData = new byte[isfs.Length];
          isfs.Read(streamData, 0, streamData.Length);              
     }
}

MemoryStream ms = new MemoryStream(streamData);
BitmapImage bmpImage= new BitmapImage();
bmpImage.SetSource(ms);
image1.Source = bmpImage; //image1 being your Image control
2 голосов
/ 05 июня 2011

Используйте документированный метод FileInfo.MoveTo здесь . Перемещение файла по тому же пути, но с другим именем, - это то, как вы переименовываете файлы.

FileInfo fInfo = new FileInfo ("path\to\person1.png"); fInfo.MoveTo("path\to\newname.png")

Если вам нужно манипулировать путями, используйте документированный метод Path.Combine здесь

1 голос
/ 05 июня 2011

В Windows Phone 7 методы API для копирования или перемещения (переименования) файла не существуют. (См. http://msdn.microsoft.com/en-us/library/57z06scs(v=VS.95).aspx) Поэтому вы должны сделать это самостоятельно.

Что-то вроде:

var oldName = "file.old"; var newName = "file.new";

using (var store = IsolatedStorageFile.GetUserStoreForApplication())
{
    using (var readStream = new IsolatedStorageFileStream(oldName, FileMode.Open, store))
    using (var writeStream = new IsolatedStorageFileStream(newName, FileMode.Create, store))
    using (var reader = new StreamReader(readStream))
    using (var writer = new StreamWriter(writeStream))
    {
        writer.Write(reader.ReadToEnd());
    }

    store.DeleteFile(oldName); 
}
0 голосов
/ 17 января 2013

Когда вы загружаете изображение, эта функция автоматически меняет имя изображения на «Полная дата» и возвращает полный путь к месту сохранения изображения с новым именем.

 string path = upload_Image(FileUpload1, "~/images/");
 if (!path.Equals(""))
    {
        //use the path var..
    }

и это функция

    string upload_Image(FileUpload fileupload, string ImageSavedPath)
{
    FileUpload fu = fileupload;
    string imagepath = "";
    if (fileupload.HasFile)
    {
        string filepath = Server.MapPath(ImageSavedPath);
        String fileExtension = System.IO.Path.GetExtension(fu.FileName).ToLower();
        String[] allowedExtensions = { ".gif", ".png", ".jpeg", ".jpg" };
        for (int i = 0; i < allowedExtensions.Length; i++)
        {
            if (fileExtension == allowedExtensions[i])
            {
                try
                {
                    string s_newfilename = DateTime.Now.Year.ToString() +
                        DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() +
                        DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + fileExtension;
                    fu.PostedFile.SaveAs(filepath + s_newfilename);

                    imagepath = ImageSavedPath + s_newfilename;
                }
                catch (Exception ex)
                {
                    return "";
                }

            }

        }

    }
    return imagepath;

}

если вам нужна дополнительная помощь, я постараюсь :) 1007 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...