Page 1 of 1
How to get an equivalent Magick.NET script from a command-line command?
Posted: 2019-05-26T14:54:00-07:00
by GoncaloM
Hi everyone.
I'm trying to achieve some transformations on images using Magick.NET and I got some useful help by getting the right command-line:
Code: Select all
magick C:\Users\gm\Desktop\Vader.jpg -resize 1280x1920^^ -gravity center -crop 1280x1920+0+0 +repage C:\Users\gm\Desktop\Vader.jpg
The problem is that I'm not being able to map it and get the same result using Magick.NET.
The code I currently have is the following (the original image size is 2732 x 2732 and the resulting image form my code has 1280x1280 rather than 1280x1920):
Code: Select all
using (MagickImage image = new MagickImage(ssimageBinary))
{
image.Density = new Density(sstargetDensity);
MagickGeometry size = new MagickGeometry(sstargetWidth, sstargetHeight);
image.Resize(size);
image.Crop(sstargetWidth, sstargetHeight, Gravity.Center);
image.RePage();
// Save the result and return it has binary data
MemoryStream mStream = new MemoryStream();
image.Write(mStream, MagickFormat.Png);
ssnewImage = mStream.ToArray();
}
Hope someone can help me with this.
Cheers
Re: How to get an equivalent Magick.NET script from a command-line command?
Posted: 2019-05-26T22:44:00-07:00
by dlemstra
You will need to change:
Code: Select all
new MagickGeometry(sstargetWidth, sstargetHeight)
into
Code: Select all
new MagickGeometry($"{sstargetWidth}x{sstargetHeight}^")
or add
And you could also use
Code: Select all
ssnewImage = image.ToByteArray(MagickFormat.Png);
Re: How to get an equivalent Magick.NET script from a command-line command?
Posted: 2019-05-27T00:42:25-07:00
by GoncaloM
dlemstra wrote: ↑2019-05-26T22:44:00-07:00
You will need to change:
Code: Select all
new MagickGeometry(sstargetWidth, sstargetHeight)
into
Code: Select all
new MagickGeometry($"{sstargetWidth}x{sstargetHeight}^")
or add
And you could also use
Code: Select all
ssnewImage = image.ToByteArray(MagickFormat.Png);
Hi dlemstra.
That worked perfectly, thank you very much.
Also, thank you for the tip to convert to byte array.
Cheers
Re: How to get an equivalent Magick.NET script from a command-line command?
Posted: 2019-05-29T00:45:49-07:00
by GoncaloM
Hello.
I'm using the code above but now I'm having an issue on the procedure to take, meaning, according to the initial image size (square or rectangle width > height or height > width) and, according to the final transformation size width > height or height > width I'm getting some images cut, for example when I have the initial image I being a square and it works fine if height > width but doesn't give me the result I want if width > height .
What should be the correct procedure to adapt the code according to all these scenarios?
Re: How to get an equivalent Magick.NET script from a command-line command?
Posted: 2019-05-29T06:34:51-07:00
by snibgo
Please don't ask the same question in multiple threads. I have deleted your other post.
I don't understand the question. I suppose you need to write some code to correctly process landscape or portrait inputs.
Re: How to get an equivalent Magick.NET script from a command-line command?
Posted: 2019-05-29T08:38:27-07:00
by GoncaloM
Hi.
So I have the following code:
Code: Select all
using (MagickImage image = new MagickImage(ssimageBinary))
{
//Define density if set in the input
if(sstargetDensity > 0)
image.Density = new Density(sstargetDensity);
MagickGeometry size = new MagickGeometry(sstargetWidth, sstargetHeight);
size.FillArea = true;
image.Resize(size);
image.Crop(sstargetWidth, sstargetHeight, Gravity.Center);
image.RePage();
ssnewImage = image.ToByteArray(MagickFormat.Png);
}
I have an image as input with 2732 x 2732 (
https://www.screencast.com/t/SSzcxn28V) and:
1- Output set with 960x1440 (width < height) - The result is just fine:
https://www.screencast.com/t/5qFgCbGHn3
2- Output set with 1920x1280 (width > height) - The result is not what I wanted:
https://www.screencast.com/t/x4oakx7hWdlI
Cheers
Re: How to get an equivalent Magick.NET script from a command-line command?
Posted: 2019-05-29T15:21:51-07:00
by GoncaloM
GoncaloM wrote: ↑2019-05-29T08:38:27-07:00
Hi.
So I have the following code:
Code: Select all
using (MagickImage image = new MagickImage(ssimageBinary))
{
//Define density if set in the input
if(sstargetDensity > 0)
image.Density = new Density(sstargetDensity);
MagickGeometry size = new MagickGeometry(sstargetWidth, sstargetHeight);
size.FillArea = true;
image.Resize(size);
image.Crop(sstargetWidth, sstargetHeight, Gravity.Center);
image.RePage();
ssnewImage = image.ToByteArray(MagickFormat.Png);
}
I have an image as input with 2732 x 2732 (
https://www.screencast.com/t/SSzcxn28V) and:
1- Output set with 960x1440 (width < height) - The result is just fine:
https://www.screencast.com/t/5qFgCbGHn3
2- Output set with 1920x1280 (width > height) - The result is not what I wanted:
https://www.screencast.com/t/x4oakx7hWdlI
Cheers
Hi snibgo,
Did you got my issue now?
Do you think you can help me on this?
Cheers
Re: How to get an equivalent Magick.NET script from a command-line command?
Posted: 2019-05-29T15:56:12-07:00
by snibgo
GoncaloM wrote:2- Output set with 1920x1280 (width > height) - The result is not what I wanted: ...
But what is wrong with it? What do you want instead?
Re: How to get an equivalent Magick.NET script from a command-line command?
Posted: 2019-05-30T06:18:54-07:00
by GoncaloM
snibgo wrote: ↑2019-05-29T15:56:12-07:00
GoncaloM wrote:2- Output set with 1920x1280 (width > height) - The result is not what I wanted: ...
But what is wrong with it? What do you want instead?
Basically what I need to do is something like a mobile splash screen image generator.
Do you know how it usually works best for the transformations for landscape? Maybe I'm looking the right way to the problem.
Re: How to get an equivalent Magick.NET script from a command-line command?
Posted: 2019-05-30T11:35:45-07:00
by fmw42
Landscape is W > H. So I am also confused about what you need.