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

آموزش برش یا 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 هست. امیدوارم که این نکته مورد استفاده شما دوستان عزیز قرار بگیرد. ITPRO باشید

نویسنده : حسین احمدی

منبع : جزیره برنامه نویسی وب سایت توسینسو

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی است


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

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

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

29 دی 1394 این مطلب را ارسال کرده

نظرات