Công cụ Thay Đổi Kích Thước Hình Ảnh Trực Tuyến Miễn Phí

Thay đổi kích thước hình ảnh thành kích thước pixel chính xác. Duy trì tỷ lệ khung hình hoặc đặt chiều rộng và chiều cao tùy chỉnh. Không tải lên máy chủ nào.

100% phía máy khách · tệp của bạn không bao giờ rời khỏi thiết bị
Thả hình ảnh vào đây hoặc nhấp để duyệt

Hỗ trợ JPEG, PNG và WebP · lên tới 20 MB

Cách đổi kích thước hình ảnh

  1. Chọn hoặc thả một tệp hình ảnh ở trên.
  2. Chọn kích thước thiết lập sẵn hoặc nhập chiều rộng và chiều cao tùy chỉnh theo pixel.
  3. Bật/tắt biểu tượng khóa để giữ nguyên hoặc bỏ qua tỷ lệ khung hình gốc.
  4. Nhấp "Đổi kích thước hình ảnh" để xử lý hình trong trình duyệt của bạn.
  5. Tải xuống hình ảnh đã đổi kích thước ngay lập tức.

Việc đổi kích thước thực sự làm gì với các pixel của bạn

Đổi kích thước hình ảnh không giống với thao tác cắt hoặc nén nó. Cắt loại bỏ các pixel ở các cạnh và giữ phần còn lại không thay đổi. Nén giữ mọi pixel nhưng mã hóa chúng chặt chẽ hơn. Đổi kích thước thực sự thay đổi số lượng pixel: một hình ảnh nguồn 4000x3000 được điều chỉnh lại tỷ lệ thành 1920x1440 phải vứt bỏ hầu hết các pixel của nó và chọn các pixel mới để đại diện cho cùng cảnh ở một phần tư độ phân giải. Thao tác toán học quyết định pixel mới nào cần viết được gọi là resampling, và chất lượng của việc thay đổi tỷ lệ gần như hoàn toàn phụ thuộc vào thuật toán resampling nào chạy.

Bốn thuật toán resampling được sử dụng phổ biến là nearest-neighbour (chọn pixel nguồn gần nhất duy nhất, các cạnh cứng được bảo tồn, có khối khi phóng to, lựa chọn đúng duy nhất cho pixel art), bilinear (pha trộn tuyến tính của 4 pixel nguồn xung quanh, nhanh và tầm thường), bicubic (nhân kubik Keys 1981 trên 16 pixel xung quanh, mặc định Photoshop trong nhiều thập kỷ), và Lanczos (hàm sinc được cửa sổ hóa bởi nhân Lanczos, đầu ra sắc nét nhất, ringing nhẹ gần các cạnh cứng, những gì ImageMagick và Sharp sử dụng theo mặc định cho downscale). Công cụ này đặt imageSmoothingQuality của Canvas API thành "high", mà Chrome và Firefox diễn giải là nhân lớp Lanczos trên máy tính để bàn và Safari diễn giải là nhân lớp bicubic. Trình duyệt chọn; JavaScript có thể yêu cầu high nhưng không thể chọn bộ lọc chính xác.

Downscaling và upscaling không phải là các vấn đề đối xứng. Downscaling loại bỏ thông tin một cách có kiểm soát; resampler quyết định chi tiết nào cần giữ và một thuật toán tốt bảo tồn cấu trúc nhìn thấy được của nguồn. Upscaling thêm các pixel chưa bao giờ được lấy mẫu, và lý thuyết thông tin (định lý lấy mẫu Nyquist-Shannon) nói rằng bạn không thể phục hồi các tần số không có trong tín hiệu gốc. Điều tốt nhất mà một resampler cổ điển có thể làm là nội suy mượt mà giữa các mẫu đã biết, luôn trông mềm. Để phóng to chân thực, lựa chọn thay thế hiện đại là super-resolution AI (Real-ESRGAN, waifu2x, Adobe Super Resolution, Topaz Gigapixel), nó tạo ra chi tiết hợp lý sử dụng mạng nơ-ron được đào tạo trên hàng triệu hình ảnh tương tự. Đó không phải là những gì đang xảy ra ở đây. Công cụ này thực hiện nội suy trung thực.

Công cụ này hoạt động bên dưới như thế nào

Toàn bộ pipeline là HTML5 Canvas 2D API. Không có thư viện bên ngoài nào được tải. Khi bạn thả một hình ảnh, File API của trình duyệt chuyển các byte cho một HTMLImageElement mới; bộ giải mã JPEG, PNG, hoặc WebP tích hợp của trình duyệt biến bitstream thành bộ đệm pixel. Tỷ lệ khung hình được tính từ chiều rộng và chiều cao tự nhiên. Một phần tử <canvas> mới được tạo trong bộ nhớ ở các kích thước đích bạn đặt, và ctx.drawImage(image, 0, 0, targetWidth, targetHeight) vẽ nguồn được điều chỉnh tỷ lệ vào đích. Bởi vì đích có các kích thước khác với nguồn, trình duyệt gọi nhân resampling của nó để tính mọi pixel mới.

Trước cuộc gọi drawImage, công cụ đặt ctx.imageSmoothingEnabled = truectx.imageSmoothingQuality = "high". Cờ đầu tiên bật làm mịn (nearest-neighbour tắt); cờ thứ hai gợi ý cho trình duyệt sử dụng bộ lọc chất lượng cao nhất của nó. Đặc tả canvas WHATWG để lại bộ lọc chính xác cho việc triển khai. Chrome và Firefox trên máy tính để bàn sử dụng các nhân lớp Lanczos tại high; Safari sử dụng nhân lớp bicubic; các bản dựng di động có thể hạ cấp xuống bilinear dưới áp lực bộ nhớ. Không ai trong số này có thể nhìn thấy với JavaScript. Sau khi vẽ, canvas.toBlob(mimeType, quality) tuần tự hóa canvas thành Blob ở định dạng đầu ra bạn đã chọn: PNG (DEFLATE không tổn thất, đối số quality bị bỏ qua), JPEG (DCT có tổn thất ở chất lượng 0,92), hoặc WebP (có tổn thất hoặc không tổn thất ở chất lượng 0,92). Blob trở thành một URL đối tượng có thể tải xuống.

Không có byte nào rời tab. Hình ảnh được giải mã trong trình duyệt của bạn, được lấy mẫu lại trong trình duyệt của bạn, và được mã hóa lại trong trình duyệt của bạn. Tệp đã tải xuống được tạo cục bộ và được lưu vào thiết bị của bạn bằng cơ chế tải xuống thông thường của trình duyệt. Lưu lượng mạng duy nhất là tải trang ban đầu và tập lệnh image-resizer.js nhỏ (vài kilobyte). Chuyển trình duyệt của bạn sang chế độ máy bay sau khi trang đã tải và bộ thay đổi kích thước tiếp tục hoạt động trên bất kỳ hình ảnh cục bộ nào bạn chọn. Mở tab Network của DevTools trong khi đổi kích thước: không có yêu cầu nào mang dữ liệu hình ảnh. Toàn bộ kiến trúc cố ý tối thiểu vì Canvas API đã đủ mạnh cho công việc này; kéo vào một thư viện chỉ thêm byte và độ phức tạp mà không thay đổi đầu ra.

Lịch sử ngắn về resampling hình ảnh

Kích thước hình ảnh thông dụng

Quy trình đổi kích thước trong thế giới thực

Cạm bẫy phổ biến và ý nghĩa của chúng

Quyền riêng tư: hình ảnh không bao giờ rời thiết bị của bạn

Mọi bộ thay đổi kích thước hình ảnh dựa trên đám mây (iLoveIMG, ResizeImage.net, ResizePixel, BeFunky, Fotor, endpoint resize của Pixlr, hàng tá dịch vụ resize image online) tải lên tệp của bạn lên máy chủ của nhà điều hành, chạy thuật toán resize của họ, và trả về hình ảnh nhỏ hơn dưới dạng tải xuống. Tác động về quyền riêng tư không tầm thường vì ảnh thường xuyên chứa nội dung có thể nhận dạng: khuôn mặt, địa chỉ có thể nhìn thấy trong nền, ảnh chụp màn hình của UI nội bộ hoặc tài liệu bí mật, ảnh trẻ em, ảnh được chụp trong không gian riêng tư, các bản quét tài liệu chứa thông tin cá nhân. Hầu hết các nhà điều hành xuất bản các chính sách quyền riêng tư cam kết xóa các tải lên trong vòng một hoặc hai giờ và mã hóa khi truyền, và các nhà lớn hơn giữ chứng nhận ISO/IEC 27001. Họ có lý do thương mại mạnh mẽ để tôn trọng các chính sách đó. Nhưng đã xóa trong vòng một giờ không phải là không bao giờ thấy. Trong giờ đó, nội dung hình ảnh nằm trong cơ sở hạ tầng của nhà điều hành, có thể truy cập bởi bất kỳ quy trình hoặc người nào có quyền thích hợp, và hiển thị trong nhật ký và sao lưu theo bất kỳ chính sách lưu giữ nào áp dụng.

Bộ thay đổi kích thước này không bao giờ tải lên bất cứ điều gì. Toàn bộ pipeline (chọn tệp, giải mã hình ảnh, đổi kích thước canvas, mã hóa, tải xuống) chạy bên trong tab trình duyệt của bạn bằng JavaScript và HTML5 Canvas API. Không tải lên, không có yêu cầu mạng nào mang dữ liệu hình ảnh, không có mục nhật ký. Bạn có thể xác minh bằng cách mở các công cụ dành cho nhà phát triển trình duyệt vào tab Network trước khi đổi kích thước: không có yêu cầu nào kích hoạt với nội dung hình ảnh. Lưu lượng mạng duy nhất là việc tải trang ban đầu và một tập lệnh image-resizer.js nhỏ. Chuyển trình duyệt sang chế độ máy bay sau khi trang đã tải và bộ thay đổi kích thước tiếp tục hoạt động trên bất kỳ tệp cục bộ nào bạn chọn, bằng chứng thực nghiệm mạnh nhất rằng không có gì đang được tải lên. Đối với ảnh có bất cứ điều gì nhạy cảm (khuôn mặt, vị trí, ảnh chụp màn hình nội bộ, tài liệu ID), việc giao dịch phía trình duyệt rõ ràng đáng để thực hiện.

Khi một công cụ khác là lựa chọn đúng

Câu hỏi thường gặp

Đổi kích thước có làm giảm chất lượng hình ảnh không?

Thu nhỏ giữ nguyên chất lượng tốt. Phóng to (làm hình lớn hơn bản gốc) sẽ gây mờ đôi chút vì các pixel mới phải được nội suy. Để có kết quả tốt nhất, hãy bắt đầu với hình nguồn độ phân giải cao nhất bạn có.

"Khóa tỷ lệ khung hình" làm gì?

Khi khóa, thay đổi chiều rộng sẽ tự động điều chỉnh chiều cao (và ngược lại) để giữ tỷ lệ gốc của hình. Mở khóa nếu bạn cần kéo giãn hoặc nén hình theo kích thước chính xác.

Hình của tôi có được tải lên máy chủ không?

Không. Tất cả việc đổi kích thước đều diễn ra cục bộ trong trình duyệt của bạn bằng HTML5 Canvas API. Hình của bạn không bao giờ rời khỏi thiết bị.

Tôi có thể thay đổi định dạng đầu ra không?

Có. Bạn có thể xuất hình đã đổi kích thước ở định dạng JPEG, PNG hoặc WebP bất kể định dạng gốc là gì. Điều này hữu ích để chuyển đổi định dạng trong khi đổi kích thước.

Các câu hỏi thường gặp khác

Sự khác biệt giữa DPI, PPI và kích thước pixel là gì?

Kích thước pixel (chiều rộng nhân chiều cao tính bằng pixel) mô tả những gì hình ảnh thực sự chứa. PPI (pixel mỗi inch) mô tả mức độ dày đặc của những pixel đó khi được hiển thị trên màn hình, một thuộc tính của phần cứng hiển thị, không phải tệp. DPI (chấm mỗi inch) mô tả bao nhiêu chấm đầu ra máy in sẽ được đặt mỗi inch giấy khi hình ảnh được in. Thẻ DPI được nhúng trong một JPEG hoặc PNG là metadata tư vấn cho máy in; nó không thay đổi dữ liệu pixel. Một hình ảnh 1920x1080 là 1920x1080 pixel ở bất kỳ cài đặt DPI nào. Để thu nhỏ bản in, hoặc giảm số lượng pixel (công cụ này) hoặc tăng metadata DPI trước khi gửi đi in (hộp thoại Print của công cụ máy tính hoặc Image Size của Photoshop với Resample Image tắt).

Tại sao hình ảnh đã được phóng to của tôi trông mờ?

Bởi vì lý thuyết thông tin nói nó phải như vậy. Resampling cổ điển (bicubic, Lanczos, Mitchell) chỉ có thể nội suy mượt mà giữa các pixel nguồn đã biết; nó không thể phát minh ra chi tiết chưa bao giờ được lấy mẫu. Định lý lấy mẫu Nyquist-Shannon đặt ra một trần cứng: các tần số trên một nửa tốc độ lưới pixel của nguồn về mặt toán học không thể phục hồi được. Phóng to nguồn 200 pixel thành 1920 pixel sẽ luôn trông mềm vì 90% các pixel mới được nội suy. Để phóng to sắc nét, hãy sử dụng một mô hình super-resolution (Real-ESRGAN, Topaz Gigapixel, Adobe Super Resolution) tổng hợp chi tiết hợp lý thông qua một mạng nơ-ron được đào tạo trên hàng triệu hình ảnh tương tự.

Tôi có nên đổi kích thước cho màn hình retina hoặc HiDPI không?

Có. Các màn hình iPhone retina, MacBook và HiDPI Windows render ở mật độ pixel CSS logic 2x hoặc 3x. Một hình ảnh hero hiển thị ở 1200 pixel logic rộng trên màn hình retina thực sự vẽ 2400 pixel vật lý. Phục vụ nguồn 2x thông qua thuộc tính srcset của HTML (tiêu chuẩn hình ảnh đáp ứng hiện đại) và trình duyệt chọn cái phù hợp cho thiết bị của mỗi người xem. Đối với một avatar duy nhất hoặc hình ảnh hero không có srcset, chỉ cần đổi kích thước thành 2x kích thước hiển thị: hình ảnh sẽ sắc nét trên retina và chỉ hơi quá lớn trên non-retina, điều này tốn một lượng nhỏ băng thông nhưng tránh được sự mờ dễ thấy hơn nhiều của một hình ảnh under-sized được kéo dài trên các pixel mật độ cao.

Công cụ này có hoạt động ngoại tuyến không?

Có. HTML5 Canvas API là một phần của chính trình duyệt, không phải một thư viện được tải xuống, vì vậy không có runtime riêng để cache. Trang tải theo cách thông thường; sau khi nó mở, bộ thay đổi kích thước chạy hoàn toàn từ mã tích hợp trình duyệt trên bất kỳ tệp cục bộ nào bạn chọn. Bạn có thể xác minh bằng cách chuyển sang chế độ máy bay sau khi mở trang và đổi kích thước một hình ảnh cục bộ. Kết quả đã tải xuống được tạo cục bộ và lưu bằng cơ chế tải xuống thông thường của trình duyệt, cũng không có sự liên quan đến mạng.

Tôi nên cắt trước khi đổi kích thước, hay sau?

Cắt trước, sau đó đổi kích thước. Cắt đặt tỷ lệ khung hình (16:9 cho YouTube, 1:1 cho feed Instagram, 9:16 cho Stories, 1.91:1 cho Open Graph) bằng cách loại bỏ các pixel cạnh không mong muốn. Đổi kích thước sau đó đặt số lượng pixel cho tỷ lệ khung hình đã chọn. Thực hiện các bước theo thứ tự khác cũng có thể nhưng lãng phí công việc, bạn sẽ lấy mẫu lại nhiều pixel hơn cần thiết và sau đó vứt bỏ một số trong khi cắt. Đối với công cụ này, sử dụng Image Cropper trước để đặt tỷ lệ khung hình, sau đó Image Resizer này để đặt kích thước đích chính xác. Nhiều quy trình cụ thể nền tảng (thumbnail YouTube ở 1280x720, feed Instagram ở 1080x1080) kết hợp cả hai bước; thực hiện chúng theo trình tự với hai công cụ chuyên dụng cho đầu ra sạch hơn so với cố gắng thực hiện cả hai cùng một lúc với các tỷ lệ khung hình kéo dài.

Có một desktop hoặc dòng lệnh tương đương không?

Vài cái. Đối với tự động hóa hàng loạt, sharp trong Node.js là thư viện phía máy chủ chuẩn (được xây dựng trên libvips). ImageMagick (magick input.jpg -resize 1920x1080 output.jpg) và GraphicsMagick chạy từ bất kỳ shell nào và xử lý các tệp khổng lồ. Pillow trong Python (Image.open(p).resize((1920, 1080), Image.LANCZOS)) là mặc định cho các quy trình khoa học dữ liệu. Đối với công việc tương tác đơn lẻ giống như công cụ này nhưng với kiểm soát per-kernel rõ ràng và nhiều định dạng đầu ra hơn bao gồm AVIF, Squoosh (Google Chrome Labs, hoàn toàn phía client) là phương án thay thế trình duyệt được khuyến nghị. Photoshop, Affinity Photo và Preview trên macOS (Tools, Adjust Size) bao quát trường hợp GUI desktop.

Công cụ liên quan