អំពីកម្មវិធីនេះ
ការប្តូរទំហំ មានន័យថាប្តូរវិមាត្រ px នៃរូបភាព — រូបថតដែលធំពេកសម្រាប់ផ្ទុកឡើង ធំជាងកន្លែងក្នុងបែបបទ ឬមានសមាមាត្រមិនត្រូវសម្រាប់បញ្ជីលក់ផលិតផល។ កម្មវិធីនេះធ្វើរឿងនោះដោយផ្ទាល់ក្នុងកម្មវិធីរុករករបស់អ្នក៖ ផ្ទុក ឬបិទភ្ជាប់រូបភាព វាយទទឹង និងកម្ពស់ជា px រួចទាញយកឯកសារដែលបានប្តូរទំហំ។ វាត្រូវបានបង្កើតសម្រាប់ការងារដែលកើតឡើងញឹកញាប់នៅកម្ពុជា — រូបថតមុខដែលត្រូវសមនឹងកំណត់ px ដែលបែបបទដាក់ពាក្យអាហារូបករណ៍ ឬក្រសួងកំណត់ រូបផលិតផលសម្រាប់ទំព័រ Facebook ឬហាង Telegram រូបថតសម្រាប់ជ្រុង CV ឬបង្កាន់ដៃដែលត្រូវខ្នាតតូចគ្រប់ដើម្បីភ្ជាប់ទៅបែបបទចំណាយ។ ដែនកំណត់ពីរគួរប្រាប់ជាមុន៖ កម្មវិធីប្តូរទំហំទាំងរូបតាមលេខដែលអ្នកបញ្ចូល — វាមិនកាត់ (crop) មិនមានប្រអប់ភាគរយ និងមិនមានជម្រើសគុណភាពទេ។ ហើយវារក្សាទុកជា PNG ជានិច្ច៖ រូបថតដែលចូលមកជា JPEG ត្រឡប់ទៅជា PNG ដែលសម្រាប់រូបថតច្រើនតែជាឯកសារធំជាងដើម។ រូបភាពខ្លួនវាមិនត្រូវបានផ្ទុកឡើងទេ — វាត្រូវបានអាន និងគូរលើ canvas នៅលើឧបករណ៍របស់អ្នកផ្ទាល់ ដូច្នេះឯកសារ scan ឬរូបថតផ្ទាល់ខ្លួនមិនចាកចេញពីម៉ាស៊ីនឡើយ។
របៀបដំណើរការ
អ្វីៗទាំងអស់កើតឡើងក្នុង image-resizer-client.tsx ដោយប្រើ API ស្តង់ដាររបស់កម្មវិធីរុករក — គ្មានការហៅទៅម៉ាស៊ីនមេឡើយ។ ការជ្រើសរើសឯកសារ (ប្រអប់ជ្រើសរើសទទួល image/* ហើយការបិទភ្ជាប់ក៏ដំណើរការដែរ) បង្កើត object URL មូលដ្ឋានីយដោយ URL.createObjectURL ហើយ HTMLImageElement អានវានៅលើឧបករណ៍របស់អ្នក; បែបបទត្រូវបំពេញជាមុនដោយទទឹង និងកម្ពស់ធម្មជាតិរបស់រូបភាពជា px។ ប្រអប់ធីក រក្សាសមាមាត្រ គណនាវិមាត្រផ្ទុយម្តងទៀតតាមសមាមាត្រដើម ពេលអ្នកកែខ្នាតខ្នាងមួយ — ដកធីកចេញ ហើយវាលទាំងពីរក្លាយជាឯករាជ្យ ដែលអនុញ្ញាតឱ្យទាញយាញដោយចេតនា។ canvas បង្ហាញជាមុនគូរឡើងវិញដោយ drawImage តាមទំហំដែលបានជ្រើសរើស រាល់ពេលផ្លាស់ប្តូរ។ ការទាញយកហៅ canvas.toBlob('image/png') ហើយរក្សាទុកឯកសារឈ្មោះ resized-ទទឹងxកម្ពស់.png។ ទទឹង និងកម្ពស់ត្រូវជាលេខគត់វិជ្ជមាន; អ្វីផ្សេងបរាជ័យការផ្ទៀងផ្ទាត់មុនពេលទាញយក។ ទំព័រកត់ត្រាព្រឹត្តិការណ៍ប្រើប្រាស់ឆៀងឆ្កាងមួយ ដែលមានតែវិមាត្រលទ្ធផល — មិនដែលមានរូបភាពខ្លួនវាឡើយ។ ទម្រង់ណាដែលកម្មវិធីរុករករបស់អ្នកអាចអានបាន អាចប្តូរទំហំបាន — JPEG, PNG, WebP, GIF និង AVIF ដំណើរការលើកម្មវិធីរុករកបច្ចុប្បន្ន; ទម្រង់ RAW របស់កាមេរ៉ាមិនអាចអានបាន ហើយ HEIC របស់ទូរស័ព្ទដំណើរការតែកន្លែងដែលកម្មវិធីរុករកគាំទ្រ។
ករណីប្រើប្រាស់
- អ្នកដាក់ពាក្យការងារ ឬអាហារូបករណ៍ បង្រួមរូបថតមុខទៅវិមាត្រ px ជាក់លាក់ដែលបែបបទរបស់ក្រសួង ឬសាលាកំណត់ មុនផ្ទុកឡើង។
- ម្ចាស់ហាងលើ Facebook ឬ Telegram ប្តូរទំហំរូបផលិតផលគ្រប់សន្លឹកទៅទទឹងដូចគ្នា ដើម្បីឲ្យបញ្ជីលក់ល្អស្អាតលើអេក្រង់ទូរស័ព្ទ។
- សិស្ស ឬកម្មករ បង្កើតរូបថតខ្នាតតូចសម្រាប់ជ្រុង CV ដើម្បីឲ្យឯកសារបញ្ចប់ស្រាលគ្រប់សម្រាប់ផ្ញើអ៊ីមែល។
- អ្នកបើកបរ ឬអ្នកលក់ក្នុងផ្សារ បង្រួមរូបបង្កាន់ដៃ រហូតដល់វាសមនឹងដែនកំណត់ផ្ទុកឡើងនៃបែបបទចំណាយ ឬគណនេយ្យ។
- បុគ្គលិក NGO នៅជំនាញ បង្រួមរូបថតពីទូរស័ព្ទទៅវិមាត្រ px តូចជាង មុនផ្ញើតាមបណ្តាញខ្សោយ។
- ជំនួយការការិយាល័យ បង្រួមទំព័រឯកសារដែលបាន scan ដើម្បីឲ្យវាសមនឹងដែនកំណត់ទំហំឯកសារនៅលើផតថលរដ្ឋាភិបាល ឬធនាគារ។
- មនុស្សម្នាក់ បង្រួមរូបថតទូរស័ព្ទធំៗ មុនបង្ហោះទៅក្រុមគ្រួសារ ឬទំព័រសហគមន៍។
សំណួរដែលគេសួរញឹកញាប់
តើខ្ញុំអាចប្តូរទំហំរូបភាពទម្រង់ណាខ្លះបាននៅទីនេះ?
អ្វីដែលកម្មវិធីរុករករបស់អ្នកអាចអាន និងបង្ហាញបាន — លើកម្មវិធីបច្ចុប្បន្ន នោះមាន JPEG, PNG, WebP, GIF, AVIF និង SVG។ ទម្រង់ RAW របស់កាមេរ៉ា (DNG, CR2, NEF និងដទៃទៀត) មិនអាចបើកបាន ព្រោះកម្មវិធីរុករកមិនអានវា ហើយ HEIC របស់ iPhone ដំណើរការតែកន្លែងដែលកម្មវិធីរុករកគាំទ្រ ដូច្នេះសូមបំប្លែងទៅ JPEG ជាមុន។ អ្វីក៏ដោយដែលចូលមក ឯកសារទាញយកគឺជា PNG ជានិច្ច — កម្មវិធីនេះមិនផ្តល់ជម្រើស JPEG ឬ WebP ទេ។
តើរូបថតរបស់ខ្ញុំត្រូវបានផ្ទុកទៅម៉ាស៊ីនមេឬទេ?
ទេ។ ឯកសារត្រូវបានបើកតាម object URL មូលដ្ឋានីយ ហើយគូរលើ canvas ក្នុងផ្ទាំងកម្មវិធីរុករករបស់អ្នក — គ្មានសំណើណាមួយដឹករូបភាពទៅកន្លែងណាឡើយ។ អ្នកអាចពិនិត្យដោយខ្លួនឯង៖ បើក developer tools របស់កម្មវិធីរុករក តាមដានផ្ទាំង network ខណៈអ្នកផ្ទុក និងប្តូរទំហំរូបថត ហើយអ្នកនឹងឃើញថាគ្មានការផ្ទុកឡើងទេ។ ទំព័រកត់ត្រាព្រឹត្តិការណ៍ឆៀងឆ្កាងពេលអ្នកទាញយក ដែលមានតែវិមាត្រ px ដែលបានជ្រើសរើស មិនដែលមានរូបភាព ឬខ្លឹមសាររបស់វាឡើយ។
ហេតុអ្វីបានជា PNG ដែលបានប្តូរទំហំរបស់ខ្ញុំ ធំជាង JPEG ដើមរបស់ខ្ញុំ?
ព្រោះកម្មវិធីនេះនាំចេញជា PNG ជានិច្ច ដែលជាទម្រង់ lossless រក្សាទុក pixels ទាំងអស់យ៉ាងពិតប្រាកដ — ខណៈ JPEG បង្រួមរូបថតខ្លាំង។ រូបថតដែលធ្លាប់ 200 KB ជា JPEG អាចក្លាយជាមេហ្គាបៃជាច្រើនជា PNG ទោះវិមាត្រតូចជាងក៏ដោយ។ ប្រសិនបើគោលដៅគឺឯកសារតូច ជាងការរក្សាព័ត៌មានពេញលេញ សូមប្តូរទំហំនៅទីនេះ រួចរក្សាទុកជា JPEG ក្នុងកម្មវិធីកែរូបភាព ឬជ្រើសឧបករណ៍ដែលមានការគ្រប់គ្រងគុណភាព JPEG។
តើខ្ញុំអាចកាត់រូបភាព ឬប្តូរទំហំជាភាគរយបានទេ?
ទេ — កម្មវិធីប្តូរទំហំទាំងរូបទៅទទឹង និងកម្ពស់ px ដែលអ្នកវាយ; គ្មានប្រអប់កាត់ និងគ្មានវាលភាគរយទេ។ ដើម្បីបានភាគរយ សូមគណនាដោយខ្លួនឯង៖ ពាក់កណ្តាលនៃរូបថតទទឹង 4000 px គឺ 2000 px។ រក្សាធីក រក្សាសមាមាត្រ ដើម្បីជៀសវាងការខុសទ្រង់ទ្រាយ ឬដកធីកវាចេញ ប្រសិនបើអ្នកចង់បានរូបភាពដែលត្រូវបានទាញទៅវិមាត្រជាក់លាក់ ឧទាហរណ៍ កន្លែងដែលទាមទារសមាមាត្រមិនត្រូវគ្នា។
តើការបង្រួមរូបថត បាត់បង់គុណភាពឬទេ?
ការធ្វើរូបភាពឱ្យតូចជាង បាត់បង់ព័ត៌មានលម្អិតជាអចិន្ត្រៃយ៍ — pixels ដែលត្រូវបានបញ្ចូលគ្នា មិនអាចបំបែកវិញបានទេ ដូច្នេះសូមរក្សាឯកសារដើម ប្រសិនបើអ្នកអាចត្រូវការទំហំពេញនៅពេលក្រោយ។ ការពង្រីកធ្វើការផ្ទុយ៖ កម្មវិធីរុករកបង្កើត pixels ដោយ interpolation ដូច្នេះលទ្ធផលធំជាងគឺព្រិល ជាជាងមុតស្រួច។ ដោយសារលទ្ធផលនៅទីនេះជា PNG lossless ការរក្សាទុកម្តងទៀតតាមកម្មវិធីនេះ មិនបន្ថែមការខូចបែប JPEG ទេ ទោះបីព័ត៌មានលម្អិតដែលបាត់បង់មិនត្រឡប់មកវិញក៏ដោយ។
តើអ្វីកើតឡើងចំពោះ metadata របស់រូបថត (EXIF)?
វាត្រូវបានបោះចោល។ PNG ដែលរក្សាទុក ផលិតពី pixels នៃ canvas ដូច្នេះម៉ូដែលកាមេរ៉ា ការកំណត់ថត និងទីតាំង GPS ដែលបានបញ្ចូល មិនឆ្លងតាមទេ — ជាប្រយោជន៍ឯកជនភាពស្ងៀមៗ ពេលចែករំលែករូបឯកសារ។ ទិសដៅអនុវត្តតាមអ្វីដែលកម្មវិធីរុករករបស់អ្នកបានអាន៖ កម្មវិធីបច្ចុប្បន្នអនុវត្តការបង្វិលដែលរក្សាទុក ពេលបង្ហាញរូបភាព ដូច្នេះឯកសារនាំចេញធម្មតាបង្ហាញដូចដែលវាបានលើអេក្រង់។
ហេតុអ្វីបានជា GIF ដែលមានចលនារបស់ខ្ញុំ ចេញមកជារូបភាពនឹងៗ?
canvas គូរស៊ុមដែលកម្មវិធីរុករកកំពុងបង្ហាញ — ពេលវេលាតែមួយ — ហើយ PNG មិនអាចផ្ទុកចលនាបាន។ ការទាញយកដូច្នេះគឺជាស៊ុមនឹងមួយជានិច្ច មិនមែនជាឯកសារចលនាទេ។ ប្រសិនបើអ្នកត្រូវការ GIF ចលនាដែលបានប្តូរទំហំស៊ុមម្តងមួយៗ សូមប្រើឧបករណ៍ GIF ពិសេស; ទំព័រនេះសម្រាប់រូបភាពនឹង។
តើមានដែនកំណត់ទំហំឯកសារ ឬគុណភាពរូបភាពឬទេ?
គ្មានដែនកំណត់កំណត់ក្នុងកម្មវិធីខ្លួនវាទេ — កម្រិតពិតប្រាកដគឺអង្គចងចាំរបស់ឧបករណ៍ ព្រោះរូបភាពទាំងមូលត្រូវបានអាន និងរក្សាទុកក្នុងផ្ទាំងកម្មវិធីរុករក។ រូបថតទូរស័ព្ទធំៗ ឬ scan គុណភាពខ្ពស់អាចយឺត ហើយនៅលើទូរស័ព្ទចាស់ រូបភាពធំខ្លាំងអាចមិនបើកបាន។ ប្រសិនបើទំព័រកក ឬឈប់ដំណើរការ សូមសាកល្បងច្បាប់តូចជាងនៃរូបភាព ឬកម្មវិធីរុករកលើកុំព្យូទ័រ។
ទិន្នន័យ និងភាពជាក់លាក់
ការអាន ប្តូរទំហំ និងនាំចេញរូបភាពឡើងវិញ ទាំងអស់ប្រើ API ដែលមានក្នុងកម្មវិធីរុករក — HTMLImageElement សម្រាប់ការអាន, CanvasRenderingContext2D.drawImage សម្រាប់ការប្តូរទំហំ និង HTMLCanvasElement.toBlob សម្រាប់លទ្ធផល PNG — ដូច្នេះគ្មានទិន្នន័យខាងក្រៅត្រូវធ្វើបច្ចុប្បន្នភាព ឬចាស់ឡើយ។ ការគាំទ្រទម្រង់ស្មើនឹងអ្វីដែលកម្មវិធីរុករករបស់អ្នកទទួលយក៖ JPEG, PNG, WebP, GIF និង AVIF ទូទៅ; RAW មិនគាំទ្រ; HEIC អាស្រ័យលើកម្មវិធីរុករក។ ទំព័របញ្ចេញព្រឹត្តិការណ៍ឆៀងឆ្កាងមួយក្នុងមួយការទាញយក ដែលមានតែទទឹង និងកម្ពស់គោលដៅ។
ប្រភពព័ត៌មាន
- MDN — CanvasRenderingContext2D.drawImage() — MDN Web Docs
- MDN — HTMLCanvasElement.toBlob() — MDN Web Docs
- MDN — URL.createObjectURL() — MDN Web Docs
- MDN — មគ្គុទ្ទេសក៍ទម្រង់ឯកសាររូបភាព — MDN Web Docs
មាតិកាត្រូវបានពិនិត្យឡើងវិញចុងក្រោយ ថ្ងៃទី 19 តុលា 2026