Saya ingin skala gambar di C # dengan tingkat kualitas sebagus Photoshop. Apakah ada pustaka pemrosesan gambar C # yang tersedia untuk melakukan hal ini?
c#
image
image-processing
image-manipulation
image-scaling
Ramesh Soni
sumber
sumber
Jawaban:
Inilah kelas pembantu Image Manipulasi yang baik yang dapat Anda lihat dan gunakan. Saya menulisnya sebagai contoh bagaimana melakukan tugas manipulasi gambar tertentu dalam C #. Anda akan tertarik dengan fungsi ResizeImage yang menggunakan System.Drawing.Image, lebar dan tinggi sebagai argumen.
Memperbarui
Beberapa orang telah meminta di komentar untuk sampel tentang bagaimana cara mengkonsumsi kelas ImageUtilities, jadi begini.
Catatan
Ingatlah bahwa gambar dapat dibuang, jadi Anda harus menetapkan hasil pengubahan ukuran Anda ke deklarasi menggunakan (atau Anda bisa menggunakan percobaan terakhir dan pastikan Anda memanggil buang akhirnya).
sumber
Ketika Anda menggambar gambar menggunakan GDI + itu cukup baik menurut pendapat saya. Anda dapat menggunakan ini untuk membuat gambar yang diskalakan.
Jika Anda ingin skala gambar Anda dengan GDI + Anda dapat melakukan sesuatu seperti ini:
sumber
new Size
dalam deklarasiscaled
:new Bitmap(original.Width * 4, original.Height * 4);
Pustaka yang diuji seperti Imagemagick dan GD tersedia untuk .NET
Anda juga bisa membaca tentang hal-hal seperti interpolasi bikubik dan menulis sendiri.
sumber
Artikel CodeProject membahas dan berbagi kode sumber untuk penskalaan gambar:
sumber
Gunakan perpustakaan ini: http://imageresizing.net
Baca artikel ini oleh penulis perpustakaan: 20 Image Sizing Pitfalls with .NET
sumber
Coba nilai yang berbeda untuk Graphics.InterpolationMode. Ada beberapa algoritma penskalaan khas yang tersedia di GDI +. Jika salah satu dari ini cukup untuk kebutuhan Anda, Anda bisa menggunakan rute ini alih-alih mengandalkan perpustakaan eksternal.
sumber
Anda dapat mencoba dotImage , salah satu produk perusahaan saya, yang mencakup objek untuk resampling gambar yang memiliki 18 jenis filter untuk berbagai tingkat kualitas.
Penggunaan umum adalah:
selain itu, dotImage menyertakan 140 beberapa perintah pemrosesan gambar aneh termasuk banyak filter yang mirip dengan yang ada di PhotoShop, jika itu yang Anda cari.
sumber
Ini mungkin bisa membantu
Perhatikan
InterpolationMode.HighQualityBicubic
-> ini umumnya merupakan tradeoff yang baik antara kinerja dan hasil.sumber
Coba cuplikan kode dasar ini:
sumber
Ada artikel tentang Proyek Kode tentang menggunakan GDI + untuk .NET untuk melakukan pengubahan ukuran foto menggunakan, katakanlah, interpolasi Bicubic.
Ada juga artikel lain tentang topik ini di blog lain (karyawan MS, saya pikir), tetapi saya tidak dapat menemukan tautan di mana pun. :( Mungkin orang lain bisa menemukannya?
sumber
Anda bisa mencoba yang ini jika itu adalah Filter Gambar 2D rendah
sumber
Ini adalah artikel yang saya lihat dirujuk dalam kode Paint.NET untuk resampling gambar: Berbagai Teknik Pemrosesan Gambar Sederhana oleh Paul Bourke.
sumber
Anda dapat mencoba kernel ajaib . Ini menghasilkan artefak pixelation lebih sedikit dari bicubic resample ketika upscaling dan juga memberikan hasil yang sangat baik ketika downscaling. Kode sumber tersedia dalam c # dari situs web.
sumber
Saya memiliki beberapa perbaikan untuk jawaban Dokter Jones.
Ini bekerja untuk siapa yang ingin bagaimana mengubah ukuran gambar secara proporsional. Ini diuji dan bekerja untuk saya.
Metode kelas I menambahkan:
dan baru tersedia menggunakan sesuai dengan kode ini:
sumber