2015-02-15 2 views
-1

С помощью этого класса я пытаюсь сделать сегодня сравнения:Как я могу сравнить, если последнее загруженное изображение спутника и текущее загруженное изображение спутника идентичны или нет?

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Net; 
using System.IO; 
using mws; 
using System.Data.SqlClient; 
using System.Text.RegularExpressions; 
using DannyGeneral; 



namespace General_utility 
{ 


    static class File_Utility 
    { 
     static public bool File_Comparison(string Filename_1, string Filename_2) 
     { 
      FileInfo fi; 
      int i; 
      byte[] a,b; 
      a=File.ReadAllBytes(Filename_1); 
      b=File.ReadAllBytes(Filename_2); 
      fi = new FileInfo(a.ToString()); 
     if (a.Length != b.Length) 
     { 
      return false; 
     } 
     else 
     { 
      for (i = 0; i < a.Length; i++) 
      { 
       if (a[i] != b[i]) 
        return false;     
      } 
     } 
     return true; 

     } 

    } 

} 

Тогда я использую это так:

file_compare = File_Utility.File_Comparison(temp_sat_dir, last_file_satellite); 

file_compare является BOOL temp_sat_dir является текущий загруженный файл: C: \ Users \ temp \ satellite.jpg

Файл в temp_sat_dir будет иметь одно и то же имя.

И last_file_satellite последний файл, загруженный и что я скопировал в новый каталог: C: \ Users \ satelliteImages \ SatImage000863.gif

Тогда я решаю, если загрузить следующие файлы мне нужно или нет. Если первый текущий файл не то же самое затем продолжить и загрузить остальные файлы, но если это тождественно не загружайте остальные:

if (file_compare == true) 
        { 
         break; 
        } 
        else 
        { 
         try 
         { 
          client1.DownloadFile(link, filePath); 
         } 
         catch (Exception e) 
         { 
          DannyGeneral.Logger.Write(e.ToString()); 
         } 
        } 

Первый раз file_compare было ложным и загрузил файл, используя CLIENT1. Весь мой код в цикле, я не показывал его здесь, но он находится в цикле, и он загружает каждые 15 минут новые 9 файлов.

Но проблема в том, что если я запустил программу заново или если прошло 15 минут, она будет загружать те же 9 изображений.

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

Проблема в том, что file_compare снова является ложным. Сначала он загрузил 9 файлов, и я снова запустил программу, но все же это ложь. И изображения те же, что и я. Файл satellite.jpg и SatImage000863.gif одинаковы, поэтому он должен делать перерыв; Но это не дает ложных данных.

+3

извините, если я заявляю очевидное, но как могли бы «satellite.jpg» и «SatImage000863.gif» быть одинаковыми? они не имеют одинакового формата кодирования. – Claies

+0

Claies о формате, который вы правы. Но в логике, если я скачал файл satellite.jpg через 15 минут снова и снова, и ничего не изменилось, саунт.jpg выглядит так же, как и последний файл на моем жестком диске SatImage000863.gif, тогда они одинаковы. И я поменяю формат, в котором это была моя ошибка, по какой-то причине я сохранил спутник как jpg, а не gif. –

+0

Claies вообще я не хочу скачивать каждый раз в те же файлы только новые. Это ссылка, например, как выглядит изображение спутника: http://www.sat24.com/image2.ashx?region=is&time=201502150945&ir=True –

ответ

0

Когда вы скопировали файл в папку «C: \ Users \ satelliteImages \ SatImage000863.gif», вы, скорее всего, сохранили его вместо копирования. Даже если вы сохраните его как файл .jpg, он, вероятно, не будет идентичен оригиналу. Вместо сохранения изображения используйте system.io.file.copy (или переместите), чтобы скопировать исходный файл, чтобы его можно было сравнить со следующим загруженным.

Смежные вопросы