Bagaimana cara mengubah ukuran gambar, dengan kualitas gambar tidak terpengaruh?
c#
image
image-scaling
publik statis
sumber
sumber
Jawaban:
Seperti yang dikatakan rcar , Anda tidak bisa tanpa kehilangan beberapa kualitas, hal terbaik yang dapat Anda lakukan di c # adalah:
sumber
Kecuali Anda melakukan grafik vektor, tidak ada cara untuk mengubah ukuran gambar tanpa berpotensi kehilangan beberapa kualitas gambar.
sumber
dari sini
sumber
Saya yakin apa yang ingin Anda lakukan adalah "Ubah Ukuran / Sampel Ulang" gambar Anda. Berikut adalah situs bagus yang memberikan instruksi dan menyediakan kelas utilitas (Yang kebetulan juga saya gunakan):
http://www.codeproject.com/KB/GDI-plus/imgresizoutperfgdiplus.aspx
sumber
Kecuali Anda mengubah ukurannya, Anda tidak dapat melakukan ini dengan grafik raster.
Yang dapat Anda lakukan dengan pemfilteran dan penghalusan yang baik adalah mengubah ukuran tanpa kehilangan kualitas yang terlihat .
Anda juga dapat mengubah metadata DPI gambar (dengan asumsi ada beberapa) yang akan mempertahankan jumlah piksel yang persis sama, tetapi akan mengubah cara editor gambar memikirkannya dalam pengukuran 'dunia nyata'.
Dan hanya untuk mencakup semua basis, jika yang Anda maksud hanyalah ukuran file gambar dan bukan dimensi gambar yang sebenarnya, saya sarankan Anda melihat pengkodean lossless dari data gambar. Saran saya untuk ini adalah menyimpan kembali gambar sebagai file .png (Saya cenderung menggunakan paint sebagai transcoder gratis untuk gambar di windows. Muat gambar di paint, simpan seperti dalam format baru)
sumber
Anda tidak dapat mengubah ukuran gambar tanpa kehilangan beberapa kualitas, hanya karena Anda mengurangi jumlah piksel.
Jangan mengurangi ukuran sisi klien, karena browser tidak melakukan pekerjaan yang baik dalam mengubah ukuran gambar.
Yang dapat Anda lakukan adalah mengubah ukuran secara terprogram sebelum Anda merendernya, atau saat pengguna mengunggahnya.
Berikut adalah artikel yang menjelaskan salah satu cara melakukan ini di c #: http://www.codeproject.com/KB/GDI-plus/imageresize.aspx
sumber
Lihat apakah Anda menyukai kualitas pengubahan ukuran gambar dari modul ASP.NET open source ini. Ada demo langsung, jadi Anda bisa mengotak-atiknya sendiri. Ini menghasilkan hasil yang (bagi saya) tidak mungkin dibedakan dari keluaran Photoshop. Ini juga memiliki ukuran file yang serupa - MS melakukan pekerjaan dengan baik pada encoder JPEG mereka.
sumber
Ada sesuatu di luar sana, pengubahan ukuran sadar konteks, tidak tahu apakah Anda akan dapat menggunakannya, tetapi itu layak untuk dilihat, itu pasti
Video demo yang bagus (Pembesaran muncul di tengah) http://www.youtube.com/watch?v=vIFCV2spKtg
Di sini mungkin ada beberapa kode. http://www.semanticmetadata.net/2007/08/30/content-aware-image-resizing-gpl-implementation/
Apakah itu berlebihan? Mungkin ada beberapa filter mudah yang bisa Anda terapkan pada gambar yang diperbesar untuk sedikit mengaburkan piksel, Anda bisa melihatnya.
sumber
Apakah Anda mengubah ukuran lebih besar atau lebih kecil? Dengan% kecil atau dengan faktor yang lebih besar seperti 2x, 3x? Apa yang Anda maksud dengan kualitas untuk aplikasi Anda? Dan jenis gambar apa - foto, gambar garis tajam, atau apa? Menulis kode penggilingan piksel tingkat rendah Anda sendiri atau mencoba melakukannya sebanyak mungkin dengan pustaka yang ada (.net atau apa pun)?
Ada banyak pengetahuan tentang topik ini. Konsep utamanya adalah interpolasi.
Rekomendasi penjelajahan:
* http://www.all-in-one.ee/~dersch/interpolator/interpolator.html
* http://www.cambridgeincolour.com/tutorials/image-interpolation.htm
* untuk C #: https: //secure.codeproject.com/KB/GDI-plus/imageprocessing4.aspx?display=PrintAll&fid=3657&df=90&mpp=25&noise=3&sort=Position&view=Quick&fr=26&select=629945 * ini khusus untuk Java tetapi mungkin mendidik - http: //today.java.net/pub/a/today/2007/04/03/perils-of-image-getscaledinstance.html
sumber
Di sini Anda dapat menemukan juga menambahkan kode watermark di kelas ini:
sumber
Berikut adalah utas forum yang menyediakan contoh kode pengubah ukuran gambar C #. Anda dapat menggunakan salah satu pengikat pustaka GD untuk melakukan pengambilan sampel ulang di C #.
sumber