C #: GDI +: Überschreiben eines Bilds mit der Save-Methode von Bitmap

7

Ich habe eine ASP.NET C # -Seite, wo ich die Bilder in einem Ordner skaliere. Ich benutze GDI +, um dies zu tun. Ich möchte die Größe der Bilder ändern und durch die alten Bilder ersetzen.So wenn ich versuche mit zu speichern der vorhandene Name, Save-Methode wirft einen Fehler. Aber wenn ich einen anderen Namen gebe, wird es gespeichert. Aber ich möchte den gleichen Dateinamen für das neu erstellte Bild in der Größe haben, da ich die vorhandene Datei mit der neuen Datei überschreiben muss welches in der Größe geändert wird. Irgendeine Idee, wie man vorgeht. Mein Code ist

%Vor%

Wenn ich die erste Zeile kommentieren, die einen neuen Namen für die Zieldatei erstellt, wird IT nicht funktionieren., andere wobe es.Aber ich möchte den gleichen Namen haben. ? Vielen Dank im Voraus

    
Shyju 24.06.2009, 02:04
quelle

2 Antworten

10

Sie müssen zuerst die Originaldatei löschen. Es ist wichtig, die Unterscheidung zu treffen. Wenn Sie mit der Bildbearbeitung in .NET arbeiten, arbeiten Sie mit einem speicherinternen Objekt, dessen Bytes durch Lesen des Originalbildes gefüllt wurden. Sie arbeiten nicht mit dem eigentlichen Originalbild. Wenn Sie also dieses völlig neue Objekt speichern (das Daten aus einem vorhandenen Bild verwendet) und versuchen, einen bereits verwendeten Pfad zu verwenden, erhalten Sie eine Ausnahme.

Sie müssen auch sicherstellen, dass die Originaldatei zu diesem Zeitpunkt noch nicht geöffnet ist. Stellen Sie sicher, dass Sie den ursprünglichen Dateistream, den Sie zum Füllen des von Ihnen manipulierten Bildobjekts verwendet haben, nicht mehr benötigen. Dann lösche und speichere dann.

    
Rex M 24.06.2009, 02:13
quelle
19

Wenn Sie ein Bild mit der Technik in der folgenden Zeile laden

%Vor%

Dann bleibt die Datei geöffnet, und wenn Sie versuchen, sie zu überschreiben, wird die Datei immer noch verwendet und Sie können nicht darauf schreiben.

Um dies zu umgehen, können Sie die Datei in einen Stream laden, um die ursprüngliche Datei zu überschreiben, da das Datei-Handle freigegeben wurde, da die Bildinformationen in den Speicher geschrieben wurden.

Sie können dies folgendermaßen tun:

%Vor%     
Soultech 09.11.2009 15:06
quelle

Tags und Links