حسین احمدی
بنیانگذار توسینسو و برنامه نویس و توسعه دهنده ارشد وب

آموزش برش یا Crop کردن تصاویر در سی شارپ

در این نکته قصد دارم خدمت شما نحوه Crop کردن تصاویر در زبان سی شارپ رو توضیح بدم. Crop کردن عملیات بریدن عکس در سایز دلخواه هست و این عملیات کاربرد زیادی در برنامه های تحت وب که تصاویر جهت نمایش صحیح Responsive می بایست در سایز مشخص نمایش داده شوند کاربرد دارد.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

برای یادگیری و آموزش سی شارپ ( آموزش زبان برنامه نویسی سی شارپ ) رایگان به این لینک بروید

در زیر کدی که برای این کار استفاده میشه رو مشاهده می کنید:

public class ImageTools
{
    private Image CropImage(Image originalImage, int width, int height)
    {
        try
        {
            var targetResize = CalculateResizeWith(originalImage.Width, originalImage.Height, width, height);
            var resizedImage = ResizeImage(originalImage, targetResize);

            var recX = (resizedImage.Width - width) / 2;
            var recY = (resizedImage.Height - height) / 2;
            var bitmap = new Bitmap(resizedImage);

            var clone = bitmap.Clone(new Rectangle(recX, recY, width, height), PixelFormat.DontCare);
            return clone;
        }
        catch (Exception e)
        {
            return null;
        }
    }

    private int CalculateResizeWith(int originalWith, int originalHeight, int targetWidth, int targetHeight)
    {
        int destHeight = 0;
        int destWidth = 0;
        while (destHeight < targetHeight)
        {
            double percent = (double)originalWith / targetWidth;
            destWidth = (int)(originalWith / percent);
            destHeight = (int)(originalHeight / percent);
            targetWidth += 10;
        }

        return destWidth;
    }

    private Image ResizeImage(Image original, int targetWidth)
    {
        var percent = (double)original.Width / targetWidth;
        var destWidth = (int)(original.Width / percent);
        var destHeight = (int)(original.Height / percent);

        var b = new Bitmap(destWidth, destHeight);
        var g = Graphics.FromImage(b);
        try
        {
            g.InterpolationMode = InterpolationMode.HighQualityBicubic;
            g.SmoothingMode = SmoothingMode.HighQuality;
            g.PixelOffsetMode = PixelOffsetMode.HighQuality;
            g.CompositingQuality = CompositingQuality.HighQuality;

            g.DrawImage(original, 0, 0, destWidth, destHeight);
        }
        finally
        {
            g.Dispose();
        }

        return b;
    }
}

در کد بالا، متدی داریم به نام CropImage که سه پارامتر originalImage که تصویر اصلی ما هست و width و height که اندازه مورد نظر جهت Crop کردن تصویر هست به عنوان ورودی قبول می کند. در زمان Crop کردن، ابتدا اندازه تصویر، متناسب با اندازه ای که برای Crop کردن وارد شده تغییر می کند تا زمان Crop کردن بتوانیم حداکثر تصویر اصلی رو در تصویر Crop شده بگنجانیم. سپس از تصویر Resize شده، از نقطه مرکزی عکس، بر اساس سایز مورد نظر تصویر برش داده شده و به عنوان خروجی برگردانده می شود. متدی که برای Crop کردن استفاده میشه، متد Clone از کلاس Bitmap هست. امیدوارم که این نکته مورد استفاده شما دوستان عزیز قرار بگیرد.


حسین احمدی
حسین احمدی

بنیانگذار توسینسو و برنامه نویس و توسعه دهنده ارشد وب

حسین احمدی ، بنیانگذار TOSINSO ، توسعه دهنده وب و برنامه نویس ، بیش از 12 سال سابقه فعالیت حرفه ای در سطح کلان ، مشاور ، مدیر پروژه و مدرس نهادهای مالی و اعتباری ، تخصص در پلتفرم دات نت و زبان سی شارپ ، طراحی و توسعه وب ، امنیت نرم افزار ، تحلیل سیستم های اطلاعاتی و داده کاوی ...

نظرات