Cắt và thay đổi kích thước hình ảnh JPEG bằng C#

JPEG hoặc JPG là một trong những định dạng hình ảnh được sử dụng phổ biến nhất để lưu trữ hình ảnh và ảnh chụp. Trong một số trường hợp nhất định, chúng tôi có thể cần cắt hoặc xoay hình ảnh vì nhiều lý do. Trong bài viết này, chúng ta sẽ tìm hiểu cách cắt và thay đổi kích thước ảnh JPEG bằng C#.

Các chủ đề sau đây sẽ được đề cập trong bài viết này:

API hình ảnh C# để cắt và thay đổi kích thước JPEG

Để cắt xén và thay đổi kích thước hình ảnh, chúng tôi sẽ sử dụng API Aspose.Imaging for .NET. Nó cho phép chúng tôi tạo, tải, thao tác, chuyển đổi và nén hình ảnh hoặc ảnh theo chương trình. Vui lòng tải xuống DLL của API hoặc cài đặt nó bằng NuGet.

PM> Install-Package Aspose.Imaging

Cắt ảnh JPEG bằng C#

Chúng ta có thể dễ dàng cắt bất kỳ hình ảnh JPEG/JPG nào từ mọi phía về phía giữa hình ảnh. Với mục đích này, lớp RasterImage cung cấp phương thức Crop(Int32, Int32, Int32, Int32) để cắt hình ảnh với các giá trị dịch chuyển được chỉ định. Nó lấy các giá trị dịch chuyển trái, phải, trên và dưới làm đối số để cắt ranh giới hình ảnh. Chúng ta có thể cắt hình ảnh bằng cách sử dụng phương pháp crop by shift bằng cách thực hiện theo các bước dưới đây:

  1. Đầu tiên, tải hình ảnh JPG đầu vào bằng lớp RasterImage.
  2. Tiếp theo, lưu hình ảnh vào bộ đệm bằng phương thức CacheData.
  3. Sau đó, gọi phương thức Crop() với các giá trị shift làm đối số.
  4. Cuối cùng, gọi phương thức Save() với đường dẫn tệp đầu ra làm đối số để lưu tệp hình ảnh đã cắt.

Mẫu mã sau đây cho biết cách cắt ảnh JPEG bằng C#.

// Ví dụ mã này trình bày cách cắt ảnh JPG bằng cách sử dụng phương pháp cắt theo ca.
// Tải hình ảnh hiện có vào một thể hiện của lớp RasterImage
RasterImage rasterImage = (RasterImage)Image.Load(@"C:\Files\images\aspose_logo.jpg");

// Trước khi cắt, hình ảnh phải được lưu vào bộ nhớ đệm để có hiệu suất tốt hơn
if (!rasterImage.IsCached)
{
    rasterImage.CacheData();
}

// Xác định giá trị dịch chuyển cho cả bốn phía
int leftShift = 30;
int rightShift = 30;
int topShift = 30;
int bottomShift = 30;

// Dựa trên các giá trị dịch chuyển, áp dụng cắt xén hình ảnh 
// Phương pháp cắt sẽ dịch chuyển giới hạn hình ảnh về phía giữa hình ảnh
rasterImage.Crop(leftShift, rightShift, topShift, bottomShift);

// Lưu hình ảnh đã cắt
rasterImage.Save(@"C:\Files\images\cropped_out.jpg");
Cắt ảnh JPEG bằng C#

Cắt ảnh JPEG bằng C#.

Cắt hình ảnh thành kích thước cụ thể bằng C#

Lớp RasterImage cũng cung cấp một phương thức Cắt (Hình chữ nhật) quá tải để cắt một vùng cụ thể của hình ảnh theo kích thước được chỉ định. Nó lấy một thể hiện của lớp Rectangle làm đối số. Chúng ta có thể cắt hình ảnh theo kích thước xác định bằng cách thực hiện theo các bước dưới đây:

  1. Đầu tiên, tải hình ảnh JPG đầu vào bằng lớp RasterImage.
  2. Tiếp theo, lưu hình ảnh vào bộ nhớ đệm bằng phương thức CacheData.
  3. Sau đó, khởi tạo đối tượng lớp Rectangle với vị trí và kích thước được chỉ định.
  4. Sau đó, gọi phương thức Crop() với đối tượng Hình chữ nhật đã tạo làm đối số.
  5. Cuối cùng, gọi phương thức Save() với đường dẫn tệp đầu ra làm đối số để lưu tệp hình ảnh đã cắt .

Mẫu mã sau đây cho biết cách cắt ảnh JPEG thành một kích thước cụ thể bằng C#.

// Ví dụ mã này trình bày cách cắt ảnh JPG bằng cách sử dụng phương pháp cắt theo hình chữ nhật.
// Tải hình ảnh hiện có vào một thể hiện của lớp RasterImage
RasterImage rasterImage = (RasterImage)Image.Load(@"C:\Files\images\aspose_logo.jpg");

// Trước khi cắt, hình ảnh phải được lưu vào bộ nhớ đệm để có hiệu suất tốt hơn
if (!rasterImage.IsCached)
{
    rasterImage.CacheData();
}

// Tạo một thể hiện của lớp Rectangle với kích thước mong muốn
Rectangle rectangle = new Rectangle(35, 35, 580, 240);

// Thực hiện thao tác cắt trên đối tượng của lớp Rectangle
rasterImage.Crop(rectangle);

// Lưu hình ảnh đã cắt
rasterImage.Save(@"C:\Files\images\CroppingByRectangle_out.jpg");
Cắt hình ảnh ở kích thước cụ thể bằng C#.

Cắt hình ảnh thành kích thước cụ thể bằng C#.

Thay đổi kích thước hình ảnh JPEG trong C#

Lớp Image cung cấp phương thức Resize() để thay đổi kích thước hình ảnh. Chúng ta có thể thay đổi kích thước hình ảnh JPEG bằng cách thực hiện theo các bước dưới đây:

  1. Đầu tiên, tải hình ảnh JPG đầu vào bằng lớp Image.
  2. Tiếp theo, gọi phương thức Resize(int32, int32) với chiều rộng và chiều cao được yêu cầu làm đối số.
  3. Cuối cùng, gọi phương thức Save() với đường dẫn tệp đầu ra làm đối số để lưu hình ảnh đã thay đổi kích thước .

Mẫu mã sau đây cho biết cách thay đổi kích thước hình ảnh JPEG bằng C#.

// Ví dụ mã này trình bày cách cắt ảnh JPG bằng cách sử dụng phương pháp cắt theo hình chữ nhật.
// Tải hình ảnh hiện có
Image image = Image.Load(@"C:\Files\images\aspose_logo.jpg");

// Chiều rộng và chiều cao mới
image.Resize(300, 100);

// Lưu hình ảnh đã thay đổi kích thước
image.Save(@"C:\Files\images\SimpleResizing_out.jpg");
Thay đổi kích thước hình ảnh JPEG trong C#

Thay đổi kích thước hình ảnh JPEG trong C#.

Thay đổi kích thước hình ảnh JPEG theo tỷ lệ trong C#

Chúng tôi có thể bị kéo giãn hình ảnh khi thay đổi kích thước với chiều cao và chiều rộng cố định. Chúng ta có thể sử dụng thay đổi kích thước theo tỷ lệ để tránh hình ảnh bị kéo dài. Với mục đích này, lớp Image cung cấp các phương thức ResizeWidthProportionally(Int32)ResizeHeightProportionally(Int32). Vui lòng làm theo các bước dưới đây để thay đổi kích thước hình ảnh theo tỷ lệ chiều rộng và chiều cao.

  1. Đầu tiên, tải hình ảnh JPG đầu vào bằng lớp Image.
  2. Tiếp theo, gọi phương thức Image.ResizeWidthProportionally(Int32) với chiều rộng mới làm đối số.
  3. Sau đó, gọi phương thức Image.ResizeHeightProportionally(Int32) với chiều cao mới làm đối số.
  4. Cuối cùng, gọi phương thức Save() với đường dẫn tệp đầu ra làm đối số để lưu hình ảnh đã thay đổi kích thước .

Mẫu mã sau đây cho biết cách thay đổi kích thước hình ảnh JPEG theo tỷ lệ bằng C#.

// Ví dụ mã này trình bày cách cắt ảnh JPG bằng cách sử dụng phương pháp cắt theo hình chữ nhật.
// Tải hình ảnh hiện có
Image image = Image.Load(@"C:\Files\images\sample.jpg");

// Chiều rộng
int newChiều rộng = image.Chiều rộng / 2;
image.ResizeChiều rộngProportionally(newChiều rộng);

// Chiều cao
int newChiều cao = image.Chiều cao / 2;
image.ResizeChiều caoProportionally(newChiều cao);

// Xác định các tùy chọn lưu
JpegOptions saveOptions = new JpegOptions();
saveOptions.Quality = 100;

// Lưu hình ảnh
image.Save(@"C:\Files\images\sample_out.jpg", saveOptions);

Nhận giấy phép miễn phí

Vui lòng dùng thử API không có giới hạn đánh giá bằng cách yêu cầu giấy phép tạm thời miễn phí.

Phần kết luận

Trong bài viết này, chúng ta đã học được cách:

  • cắt ảnh JPEG trong C#;
  • cắt hình ảnh theo kích thước cụ thể;
  • thay đổi kích thước hình ảnh JPEG theo chương trình;
  • thay đổi kích thước hình ảnh JPEG theo tỷ lệ.

Ngoài ra, bạn có thể tìm hiểu thêm về Aspose.Imaging for .NET API bằng tài liệu. Trong trường hợp có bất kỳ sự mơ hồ nào, vui lòng liên hệ với chúng tôi trên diễn đàn.

Xem thêm