Атомная копия файла под .NET

Если вы хотите, чтобы белые части были невидимыми, лучший способ - использовать фильтры изображений и сделать белые пиксели прозрачными, здесь обсуждается здесь с помощью @PhiLho с некоторыми хорошими образцами, если вы хотите изменить размер ваше изображение так, чтобы границы не имели белых цветов, вы можете сделать это с четырьмя простыми циклами, этот маленький метод, который я написал для вас, делает трюк, обратите внимание, что он просто обрезает верхнюю часть изображения, вы можете написать остальные ,

    private Image getCroppedImage(String address) throws IOException{
    BufferedImage source = ImageIO.read(new File(address)) ;

    boolean flag = false ;
    int upperBorder = -1 ; 
    do{
        upperBorder ++ ;
        for (int c1 =0 ; c1 < source.getWidth() ; c1++){
            if(source.getRGB(c1, upperBorder) != Color.white.getRGB() ){
                flag = true;
                break ;
            }
        }

        if (upperBorder >= source.getHeight())
            flag = true ;
    }while(!flag) ;

    BufferedImage destination = new BufferedImage(source.getWidth(), source.getHeight() - upperBorder, BufferedImage.TYPE_INT_ARGB) ;
    destination.getGraphics().drawImage(source, 0, upperBorder*-1, null) ;

    return destination ;
}

11
задан user256890 8 February 2010 в 14:38
поделиться

4 ответа

Другие предлагали транзакционную NTFS, которая подходит для развертывания в Vista или более поздних версиях. Если вам нужна поддержка XP (или более ранней версии), лучшим решением будет временный файл с последующим перемещением (переименованием).

Ответ на этот аналогичный вопрос дает дополнительную информацию: Атомарность File.Move

10
ответ дан 3 December 2019 в 08:04
поделиться

Более новые версии Windows позволяют использовать транзакции .

2
ответ дан 3 December 2019 в 08:04
поделиться

Посмотрите на Background Intelligent Transfer Service в Windows Server 2003. Она обеспечивает механизм заданий, которые могут быть приостановлены и возобновлены даже после перезапуска.

Вот несколько примеров ее использования в .NET:

Написание автоматически обновляющихся приложений с помощью .NET и Background Intelligent Transfer Service API

SharpBITS.NET - обертка для BITS API

1
ответ дан 3 December 2019 в 08:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: