Mogrify: Getting cropped part as a new file - mogrify

I used mogrify CLI in order to crop a 50x50 sized patch from an image, where the coordinate of the patch's upper-left corner is (100,200):
mogrify -crop 50x50+100+200 my_image.png
The problem is that my_image.png is overridden with the crop.
How can I output the cropped results into another file instead, leaving the original image as is? (i.e. my_cropped_image.png)

Related

Why the size of file with cropped image is the same as of initial one?

I have scanned my copybook and want to crop out extra white regions with Inkscape.
To achieve this, I import initial image (PDF) to Inkscape, draw appropriate rectangle, and use Object->Clip->Set to cut out needed region. Then I resize page to drawing and save obtained page as new PDF file through File->Save a Copy.
I expected that the size of the new PDF file (with cropped image) will be less than the size of the initial PDF (with image without crop), but they are the same.
What is the reason of this and may it be worked around?
I use Inkscape 0.91 at Linux Mint 18.2.
Thank you in advance.
Because the original image is still there, fully intact and with all its contents. The cropping rectangle are just instructions to the PDF viewer to crop out those regions when rendering the image.
However in Inkscape you can bake the crop rectangles and when exporting to PDF "apply raster effects" which should actually alter the contained image(s).

How to cut the png image as per the shape?

I have no experience on any image processing/editing tool. And I am doing a project, which requires me to use different shapes. I could create different shapes using visio. But however not able to get rid of white background behind. I need only shape not squared white background.Tried online out of my ways but not successfull.
Any help will be greatly appreciated.
Thanks,
Ganesh
Absolutely any image file has to be contained within a rectangular frame, this includes png and SVG.
Some image file formats can have what are called alpha channel backgrounds this allows you to see through transparent areas.
What you want to do is remove the white background to expose the alpha channel background in Photoshop (or similar tool) which can then be saved out as transparent.
For example in Photoshop:
If you open this image directly and have no other layers, double click the layer that says background and OK the confirmation box. This turns your flat image into a layered image
Select the magic wand tool and ensure you have a high tolerance set (3)
with the wand selected click the white area to bring up a marquee around your selection (the white background) and hit delete to remove it.
Your image should now have a chequered background which is the transparency showing through.
If you now go to file > save as and select png, your image should now be saved out with an alpha background.
Please note: There are further optimisations to make if this is for web, including file formats and file size but that is beyond the scope of this question but I encourage you to read up on the Gif format and it's restrictions, the difference between 8bit and 24bit pngs and how to use SVG.
You can do it pretty simply at the command-line using ImageMagick which is free and installed on most Linux distros and is available for OSX and Windows.
Basically, you want to make your whites transparent, so you would do
convert shape.png -transparent white result.png
If your whites are a little bit off-white, you could allow for some variation with a little fuzz as follows:
convert shape.png -fuzz 10% -transparent white result.png
I added the checkerboard background just so you can see it on StackOverflow's white background - it is not really there.
By the way, you may like to trim to the smallest bounding rectangle while you are there:
convert shape.png -fuzz 10% -transparent white -trim result.png
By the way, you can also draw your shapes with ImageMagick:
convert -size 150x150 xc: -fill none -stroke "rgb(74,135,203)" -draw 'stroke-width 90 ellipse 0,0 80,80 30,80' arc.png
See Anthony Thyssen's excellent examples here.

Creating PDF from a single JPG file using Ghostscript - image placement issue inside PDF

I'm trying to output a PDF file from a JPG file using Ghostscript. The following command works fine:
gs -sDEVICE=pdfwrite -sPAPERSIZE=a4 -o /pdf_from_image.pdf /path/to/viewjpeg.ps -c \(/source_image.jpg\) viewJPEG
Based on existing threads and Ghostscript documentation I'm using -sPAPERSIZE=a4 to generate the output in A4 format. The PDF generates fine, but the PROBLEM is when the image dimensions don't match that of A4, GS puts the image at the bottom of the page with best "width" fit. I think it actually tries to put it in the lower left bottom. To add to it, at times the image is auto rotated.
My question is:
1) Is there any option to put the image on top left corner of the page.
2) Stop GS auto rotating the image.
Any help to put me in the right direction would be greatly appreciated. Thanks.
PDF and PostScript use a coordinate system with the origin (0,0) in the lower left corner, so Ghostscript is actually doing the 'correct' thing: putting the image at the origin. To place the image at the top, you'd have to subtract the image height from the page height and translate the image upwards by that amount.
As for why some images are being rotated, I can't say for sure. Some JPGs contain metadata that indicates the intended orientation of the image--however, not all software gets the value right. I don't know if Ghostscript respects that metadata, but you could check if your 'bad' images have the correct orientation tag (you can use Exif or similar to inspect them).

Margins Disappear In PDF -> PNG Conversion with ImageMagick

I'm having troubles with converting PDF to PNG in ImageMagick. I've used different variations, including using Ghostscript and piping the output to ImageMagic (as given here - which doesn't seem to work for me, so I have to save to a temp file instead of using a pipe). I've found this is working best for me:
convert -background transparent -density 150x150 Test.pdf Test-IMSoloOut.png
Here's a screenshot of the original PDF in my viewer (Preview, on OS X):
And when I convert it, I get this:
The problem is it's dropping the margins. I'm not clear whether it's making them transparent or what, but the formatting of the image looks sloppy without the margins.
I was given this to try:
convert -density 150x150 Test.pdf -gravity center -background transparent -extent 612x792 Test-Extras.png
And that just gives me one section of the page:
I tried adapting that and changed the 612x792 to 1275x1650, which would fit 150DPI multiplied by the size of the page (8.5" x 11"). When I did that, I got a large image, but, again, the margins were gone, like in the 2nd image above.
These images will be displayed in a Java program that will be displaying a number of pages, so the margins could vary (in other words, I can't just wrap a set border around the output, as seen in the 2nd image, since the border size will change in some images).
I've seen a number of hits on removing margins for PDF to PNG conversion, but they don't seem to provide anything to help me.
My guess is that, in the conversion process, the margins are converted to something transparent, so I tried adding "-transparent white" to the command line for convert, but it didn't help.
What can I do to either get the margins back or, if they're there and not visible, how can I get them to display? Basically I want the PNG file (image #2) to look like the PDF file with margins included (image #1).
I suspect I'm missing something obvious - I hope it's that easy.
How can I make sure the space in the margins show up?
I never got an exact answer, but one of the ImageMagick people was quite helpful with this. Basically, I needed to use the option "-extent" to specify how big the image was. Since I was using a different density than the default, I had to take that into account, too. The command line that worked was:
convert -density 150x150 InputFile.pdf -background white -units PixelsPerInch -density 150 -extent 1275x1650 OutputFile.png
The 1275x1650 comes from multiplying 150 (for the DPI) by 8.5" for the width and by 11 for the height.

Getting the cropping and rotation information of an image in a PDF

I have a PDF with a page with an image. I'm using a command line tool to extract this image. The page in the PDF shows only a part of the image, because the extracted image as a lot more "contents" and they are slightly rotated. This happens, I assume, because some sort of cropping and/or rotation was applied to the image when the PDF was built.
Is there anyway, using iText, to figure out the offset and rotation applied to the image? That would allow me to crop the extracted image in the same way and end up with something similar to what's visible on the PDF page.