Jak napisać aplikację, która będzie przycinać obrazy w C #?
c#
image-processing
sandy101
źródło
źródło
DrawImageUnscaledAndClipped
bardziej wydajna niż wDrawImage
przypadku upraw?Sprawdź ten link: http://www.switchonthecode.com/tutorials/csharp-tutorial-image-editing-saving-cropping-and-resizing
źródło
Prostsza niż zaakceptowana odpowiedź jest następująca:
i pozwala uniknąć „Brak pamięci ryzyka wyjątku „Brak ” najprostszej odpowiedzi.
Zauważ, że
Bitmap
i stądGraphics
sąIDisposable
using
klauzule.EDYCJA : Uważam, że jest to w porządku w przypadku plików PNG zapisanych przez
Bitmap.Save
lub Paint.exe, ale nie powiedzie się w przypadku plików PNG zapisanych przez np. Paint Shop Pro 6 - zawartość jest przesunięta. DodanieGraphicsUnit.Pixel
daje inny zły wynik. Być może tylko te zawodzące PNG są wadliwe.źródło
Bitmap
iGraphics
sąIDisposable
- dodajusing
klauzulęmoże to być konieczne, nawet jeśli zastosujesz najlepszą odpowiedź tutaj, szczególnie jeśli twój obraz jest naprawdę świetny, a rozdzielczości nie są dokładnie 96,0
Mój przykładowy test:
źródło
To całkiem proste:
Bitmap
obiekt o przyciętym rozmiarze.Graphics.FromImage
do tworzeniaGraphics
obiektu dla nowej mapy bitowej.DrawImage
metody, aby narysować obraz na mapie bitowej z ujemną współrzędną X i Y.źródło
Oto prosty przykład przycinania obrazu
źródło
Jeśli używasz AForge.NET :
źródło
Szukałem łatwej i SZYBKIEJ funkcji bez dodatkowej biblioteki do wykonania zadania. Próbowałem rozwiązania Nicks , ale potrzebowałem 29,4 sekundy, aby „wyodrębnić” 1195 obrazów pliku atlasu. Później udało mi się w ten sposób i potrzebowałem 2,43 sekundy, aby wykonać tę samą pracę. Może to będzie pomocne.
źródło
Przycinanie obrazu jest bardzo łatwe w C #. Jednak robienie rzeczy, w jaki sposób zamierzasz zarządzać kadrowaniem obrazu, będzie nieco trudniejsze.
Przykład poniżej przedstawia sposób przycięcia obrazu w języku C #.
źródło
Istnieje opakowanie C # dla tego, co jest open source, hostowane w Codeplex o nazwie Web Image Cropping
Zarejestruj kontrolę
<%@ Register Assembly="CS.Web.UI.CropImage" Namespace="CS.Web.UI" TagPrefix="cs" %>
Zmiana rozmiaru
Kadrowanie kodu za - na przykład metoda Call Crop po kliknięciu przycisku;
wci1.Crop(Server.MapPath("images/sample1.jpg"));
źródło
Zakładając, że masz na myśli, że chcesz wziąć plik obrazu (JPEG, BMP, TIFF itp.) I przyciąć go, a następnie zapisać jako mniejszy plik obrazu, sugeruję użycie narzędzia innej firmy, które ma interfejs API .NET. Oto kilka popularnych, które lubię:
LeadTools
Accusoft Pegasus Snowbound Imaging SDK
źródło
Tylko ta próbka działa bez problemu:
źródło
To jest inny sposób. W moim przypadku mam:
Wewnątrz przycisku mam ten kod:
Próbowałem w Visual Studio 2012 przy użyciu C #. Znalazłem to rozwiązanie z tej strony
źródło
tutaj działa demo na github
https://github.com/SystematixIndore/Crop-SaveImageInCSharp
Logika kodu C # do przesyłania i przycinania.
źródło