Resize with crop using ImageMagick.NET and C#

后端 未结 1 441
无人及你
无人及你 2021-01-03 00:35

I have a big image that I want to resize to 230×320 (exactly). I want the system to resize it without losing aspect ratio. i.e. if the image is 460×650, it should first resi

相关标签:
1条回答
  • 2021-01-03 01:18

    This is how I solved the issue.

    private void ProcessImage(int width, int height, String filepath)
        {
            // FullPath is the new file's path.
            ImageMagickNET.Image img = new ImageMagickNET.Image(filepath);
            String file_name = System.IO.Path.GetFileName(filepath);
    
            if (img.Height != height || img.Width != width)
            {
                decimal result_ratio = (decimal)height / (decimal)width;
                decimal current_ratio = (decimal)img.Height / (decimal)img.Width;
    
                Boolean preserve_width = false;
                if (current_ratio > result_ratio)
                {
                    preserve_width = true;
                }
                int new_width = 0;
                int new_height = 0;
                if (preserve_width)
                {
                    new_width = width;
                    new_height = (int)Math.Round((decimal)(current_ratio * new_width));
                }
                else
                {
                    new_height = height;
                    new_width = (int)Math.Round((decimal)(new_height / current_ratio));
                }
    
    
                String geomStr = width.ToString() + "x" + height.ToString();
                String newGeomStr = new_width.ToString() + "x" + new_height.ToString();
    
                ImageMagickNET.Geometry intermediate_geo = new ImageMagickNET.Geometry(newGeomStr);
                ImageMagickNET.Geometry final_geo = new ImageMagickNET.Geometry(geomStr);
    
    
                img.Resize(intermediate_geo);
                img.Crop(final_geo);
    
            }
    
            img.Write(txtDestination.Text + "\\" + file_name);
        }
    
    0 讨论(0)
提交回复
热议问题