{"id":23025,"date":"2016-06-25T03:01:24","date_gmt":"2016-06-24T17:01:24","guid":{"rendered":"http:\/\/www.rjmprogramming.com.au\/ITblog\/?p=23025"},"modified":"2016-06-24T18:52:06","modified_gmt":"2016-06-24T08:52:06","slug":"imagemagick-and-three-ps-charcoal-implode-quality-tutorial","status":"publish","type":"post","link":"https:\/\/www.rjmprogramming.com.au\/ITblog\/imagemagick-and-three-ps-charcoal-implode-quality-tutorial\/","title":{"rendered":"ImageMagick and Three Ps Charcoal Implode Quality Tutorial"},"content":{"rendered":"<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/affine_rotation_imagemagick.php\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"ImageMagick and Three Ps Charcoal Implode Quality Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/charcoal_implode_quality.jpg\" title=\"ImageMagick and Three Ps Charcoal Implode Quality Tutorial\"  \/><\/a><p class=\"wp-caption-text\">ImageMagick and Three Ps Charcoal Implode Quality Tutorial<\/p><\/div>\n<p><a target=_blank title='PHP ImageMagick class' href='http:\/\/php.net\/manual\/en\/book.imagick.php'>ImageMagick<\/a> is a great tool for image manipulations of web server image files as you would glean from <a title='ImageMagick and Three Ps Affine Transformation Tutorial' href='#iarpatt'>ImageMagick and Three Ps Affine Transformation Tutorial<\/a> as shown below.<\/p>\n<p>Well, today, we build on that previous Affine Transformation functionality, and still allow the Three P&#8217;s, that being PHP and Python and Perl, to ride again, but introduce three new effects into the equation, the inspiration for which came from this <a target=_blank title='Useful link' href='http:\/\/www.howtogeek.com\/109369\/how-to-quickly-resize-convert-modify-images-from-the-linux-terminal\/'>useful link<\/a>, so, thanks for that and thanks for the quote below &#8230;<\/p>\n<ul>\n<li>charcoal &#8230; like embossing<\/li>\n<li>implode<br \/>\n<blockquote cite='http:\/\/www.howtogeek.com\/109369\/how-to-quickly-resize-convert-modify-images-from-the-linux-terminal\/'><p>\nThe implode effect makes it appear as if there\u2019s a black hole at the center of the image.\n<\/p><\/blockquote>\n<\/li>\n<li>quality &#8230; up to 100, the higher the quality the denser the pixels of the resultant image file<\/li>\n<\/ul>\n<p>So if you think of our <a target=_blank title='RJM Programming logo' href='http:\/\/www.rjmprogramming.com.au\/MyBusinessUnidad\/Welcome_files\/logo.jpg'>logo<\/a> here at RJM Programming as a &#8220;sow&#8217;s ear&#8221; &#8230; <font size=1>how can you be so <a target=_blank title='?' href='https:\/\/www.youtube.com\/watch?v=KcdQk7JBPzQ'>Cruella de Vil<\/a>?<\/font> &#8230; then we are proud to announce with today&#8217;s <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/charcoal_implode_quality.jpg\" title=\"Click picture\">tutorial picture<\/a> that &#8230;<\/p>\n<blockquote><p>\nWe&#8217;ve turned a sow&#8217;s ear into a silk purse &#8230; <a target=_blank title='Knew there would be a link' href='https:\/\/www.youtube.com\/watch?v=A1gnxcHy_tM'>butterfly style<\/a>\n<\/p><\/blockquote>\n<p> &#8230; <font size=1>boom, boom<\/font>.<\/p>\n<p>To try this yourself, please see &#8230;<\/p>\n<ul>\n<li><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/affine_rotation_imagemagick.php\" title='Click picture'>live run<\/a><\/li>\n<li><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/affine_rotation_imagemagick.php-GETME\">affine_rotation_imagemagick.php<\/a> &#8230; latest PHP source code<\/li>\n<li><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/affine_rotation_imagemagick.php-GETME\">affine_rotation_imagemagick.php<\/a> &#8230; changes to PHP source code to make today&#8217;s functionality happen<\/li>\n<\/ul>\n<p>Chow for now!<\/p>\n<hr>\n<p id='iarpatt'>Previous relevant <a target=_blank title='ImageMagick and Three Ps Affine Transformation Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/imagemagick-and-three-ps-affine-transformation-tutorial\/'>ImageMagick and Three Ps Affine Transformation Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/affine_rotation_imagemagick.php\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"ImageMagick and Three Ps Affine Transformation Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/affine_rotation_imagemagick.jpg\" title=\"ImageMagick and Three Ps Affine Transformation Tutorial\"  \/><\/a><p class=\"wp-caption-text\">ImageMagick and Three Ps Affine Transformation Tutorial<\/p><\/div>\n<p>It&#8217;s a common requirement with Information Technology programming to want to transform an image file.<\/p>\n<p>With <a target=_blank title='CSS3 transformations information from w3schools' href='http:\/\/www.w3schools.com\/cssref\/css3_pr_transform.asp'>CSS<\/a> there are mechanisms to display images in a (affine) transformed way regarding &#8230;<\/p>\n<ul>\n<li>rotation<\/li>\n<li>scale<\/li>\n<\/ul>\n<p> &#8230; for display purposes, without altering the image file itself, but today we talk about the PHP <a target=_blank title='PHP ImageMagick class' href='http:\/\/php.net\/manual\/en\/book.imagick.php'>ImageMagick<\/a> (class&#8217;s) method of transforming the image file itself, and convert it to PDF format along the way if you wish.  We last talked about ImageMagick and data URIs with the blog posting called <a target=_blank title='Yahoo YQL Web Service JSON data.uri PDF Tutorial' href='#yywsjdpt'>Yahoo YQL Web Service JSON data.uri PDF Tutorial<\/a> some time back, as shown below.<\/p>\n<p>Of course, your (interactive) image editors like <a target=_blank title='Gimp landing page' href='http:\/\/www.gimp.org\/'>Gimp<\/a> or <a target=_blank title='Paintbrush for Mac' href='http:\/\/paintbrush.sourceforge.net\/'>Paintbrush<\/a> (for Mac, and no doubt, for Windows as well) or numerous others out there will do this well too, but it can be useful to be able to use a serverside language like PHP and harness the wealth of functionality in libraries like the wonderful ImageMagick to help perform this task in a web application, as well.  Find, too, that with a hardcopy scanning requirement I have, that there is a need to rotate an image 90 degrees, and have found that the best application to use for this purpose is good ol&#8217; <a target=_blank title='PreView (on a Mac) information from Apple' href='https:\/\/support.apple.com\/en-us\/HT201740'>Preview<\/a>, on a Mac laptop, because it allows for that extra stretch horizontally that PaintBrush doesn&#8217;t seem to cater for, without some extra steps you need to perform.  Have to say that ImageMagick techniques, derived from this <a target=_blank title='Very useful ImageMagick usage link ... thanks' href='http:\/\/www.imagemagick.org\/Usage\/distorts\/affine\/'>very useful link<\/a>&#8216;s advice, results in similar useful resizing techniques, like Preview does, when image rotation transformations are happening.<\/p>\n<p>So why the <a target=_blank title='Portable document format (PDF) information from Wikipedia ... thanks' href='https:\/\/en.wikipedia.org\/wiki\/Portable_Document_Format'>PDF<\/a> conversion?  Well, PDF has that brilliant quality of not carrying along the meta data trail that an image file has, and as such, PDF files are great to use as a substitute for hardcopy and\/or to use when that meta data should be avoided.   We say that PDF, in this way, enhances <a target=_blank title='Document fidelity blog postings here at this blog' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/document-fidelity\/'>Document Fidelity<\/a>.<\/p>\n<p>We&#8217;d love to show you this web application in just HTML and Javascript, for those people whose hosting does not include a serverside language such as PHP, but, alas, there is file manipulation going on here, left, right, and centre, and you will need a serverside language, and an <a target=_blank title='PHP ImageMagick class' href='http:\/\/php.net\/manual\/en\/class.imagick.php'>ImageMagick<\/a> class installed, for the <a target=_blank title='Affine transformation information from Wikipedia ... thanks' href='https:\/\/en.wikipedia.org\/wiki\/Affine_transformation'>Affine Transformation<\/a> functionality to work.<\/p>\n<p>Thanks, again, to <a target=_blank title='Clipart Panda' href='http:\/\/www.clipartpanda.com\/clipart_images\/shared-by-boblet-13358642'>Clipart Panda<\/a> for the background image today.<\/p>\n<p>And before we go.  We have to announce &#8230;<\/p>\n<blockquote><p>\nThe <a target=_blank title=\"The Three P's blog postings at this blog\" href='https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/the-three-ps\/'>Three P&#8217;s<\/a> ride again!\n<\/p><\/blockquote>\n<p>Yes, for interest, take a look at the way the <font color=red size=5>P<\/font>HP uses the <a target=_blank title='PHP exec() method information' href='http:\/\/php.net\/manual\/en\/function.exec.php'>exec()<\/a> method to call <i><font color=red size=5>P<\/font>erl<\/i> and <i><font color=red size=5>P<\/font>ython<\/i> to do a bit of mathematics to help work out some affine transformation parameters derived from the user entered ..<\/p>\n<ol>\n<li>rotation in degrees<\/li>\n<li>scale as a decimal<\/li>\n<\/ol>\n<p> &#8230; form data <a target=_blank title='HTML form method POST information from w3schools' href='http:\/\/www.w3schools.com\/tags\/att_form_method.asp'>POST<\/a>ed back to the same PHP (source code) <a target=_blank title=\"affine_rotation_imagemagick.php\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/affine_rotation_imagemagick.php_GETME\">affine_rotation_imagemagick.php<\/a> of today&#8217;s tutorial.<\/p>\n<p>So we think you should try all this out at this <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/affine_rotation_imagemagick.php\" title='Click picture'>live run<\/a> link to today&#8217;s mathematical web application.<\/p>\n<hr>\n<p id='yywsjdpt'>Previous relevant <a target=_blank title='Yahoo YQL Web Service JSON data.uri PDF Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/yahoo-yql-web-service-json-data-uri-pdf-tutorial\/'>Yahoo YQL Web Service JSON data.uri PDF Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/YQL\/DataUri\/data_uri_yql.php\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Yahoo YQL Web Service JSON data.uri PDF Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/YQL\/DataUri\/yql_data_uri.gif\" title=\"Yahoo YQL Web Service JSON data.uri PDF Tutorial\"  \/><\/a><p class=\"wp-caption-text\">Yahoo YQL Web Service JSON data.uri PDF Tutorial<\/p><\/div>\n<p>Today, we follow up on yesterday&#8217;s <a target=_blank title='' href='#yywsjdt'>Yahoo YQL Web Service JSON data.uri Tutorial<\/a> as shown below, by adding a display in PDF of the image data, as an extra piece of functionality.<\/p>\n<p>We use the incredibly useful PHP <a target=_blank title='PHP ImageMagick class' href='http:\/\/php.net\/manual\/en\/book.imagick.php'>ImageMagick<\/a> class functionality to do the conversion to PDF from the image formats, and only perform the conversion if the data uri is possible to use via the use of the Yahoo YQL Web Service data.uri methods.<\/p>\n<p>As this involves storing files on a server, so there is the necessity of using a server-side language like PHP.  We restrict PDF display to image files on the http:\/\/www.rjmprogramming.com.au domain, as these are files I&#8217;m happy for you to try, so, if you have trouble finding these, you can examine http:\/\/www.rjmprogramming.com.au domain webpages and use &#8230;<\/p>\n<ul>\n<li>View-&gt;Page Source web browser options &#8230; or a &#8230;<\/li>\n<li>Web Inspector (like Firefox&#8217;s Firebug) &#8230; or &#8230;<\/li>\n<li>Right Click an image and get <i>image information<\/i><\/li>\n<\/ul>\n<p> &#8230; but, as for yesterday, bear in mind that there is a 25600 byte limit to the Yahoo YQL data.uri Web Service conversions.<\/p>\n<p>It is not only this type of conversion that the PHP <a target=_blank title='PHP ImageMagick class' href='http:\/\/php.net\/manual\/en\/class.imagick.php'>ImageMagick<\/a> class functionality can help with, and we strongly encourage you to examine it more as a wonderful tool for graphics and media work.  We installed it onto our local MAMP server via the <a target=_blank title='MacPorts' href='https:\/\/www.macports.org\/'>MacPorts<\/a> command (in the Mac application Terminal) &#8230;<\/p>\n<p><code><br \/>\nsudo port install ImageMagick<br \/>\n<\/code><\/p>\n<p> &#8230; as you can see over to the top right of <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/YQL\/DataUri\/yql_data_uri.gif\" title='Click picture'>today&#8217;s tutorial picture<\/a>.<\/p>\n<p>We&#8217;ll leave you today with our PHP code you could call <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/YQL\/DataUri\/data_uri_yql.php-GETME\" title='data_uri_yql.php'>data_uri_yql.php<\/a> which changed from yesterday&#8217;s code <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/YQL\/DataUri\/data_uri_yql.php-GETME\" title='data_uri_yql.php'>in this way<\/a>.<\/p>\n<hr>\n<p id='yywsjdt'>Previous relevant <a target=_blank title='' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/yahoo-yql-web-service-json-data-uri-tutorial\/'>Yahoo YQL Web Service JSON data.uri Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/YQL\/DataUri\/data_uri_yql.php\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Yahoo YQL Web Service JSON data.uri Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/YQL\/DataUri\/yql_data_uri.jpg\" title=\"Yahoo YQL Web Service JSON data.uri Tutorial\"  \/><\/a><p class=\"wp-caption-text\">Yahoo YQL Web Service JSON data.uri Tutorial<\/p><\/div>\n<p>Here is a tutorial that might be re-introducing you to the Yahoo Web Services called YQL, building on previous ones here at this <a href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=YQL' title='Yahoo YQL tutorials here'>blog<\/a>.   The name is the way it is because it simplified the API aspects of its functionality for the developer to concentrate on SQL, and I&#8217;m really supportive of this concept.  You don&#8217;t have to output in JSON, as other data forms like XML are acceptable.  Let&#8217;s see what Wikipedia says about YQL below. <\/p>\n<blockquote>\n<p>Yahoo! Query Language (YQL) is an SQL-like query language created by Yahoo! as part of their Developer Network. YQL is designed to retrieve and manipulate data from APIs through a single Web interface, thus allowing mashups that enable developers to create their own applications.[1]<\/p>\n<p>Initially launched in October 2008 with access to Yahoo APIs,[2] February 2009 saw the addition of open data tables from third parties such as Google Reader, the Guardian, and The New York Times.[3] Some of these APIs still require an API key to access them. On April 29th of 2009, Yahoo introduced the capability to execute the tables of data built through YQL using JavaScript run on the company&#8217;s servers for free.[3]<\/p>\n<\/blockquote>\n<p>So this tutorial uses a YQL web service into the data emanating from its links to the data.uri web service database with Yahoo YQL website &#8230; thanks.<\/p>\n<p>We&#8217;ve talked in passing about the data.uri concept before.  In the case of an HTML <a target=_blank title='HTML img tag information from w3schools' href='http:\/\/www.w3schools.com\/tags\/tag_img.asp'><i>img<\/i><\/a> tag&#8217;s definition you can specify the src= value in three different ways &#8230;<\/p>\n<ol>\n<li>as an address via an http: or https: protocol URL such as http:\/\/www.rjmprogramming.com.au\/MyBusinessUnidad\/Welcome_files\/logo.jpg (our default)<\/li>\n<li>as an address via a local file: protocol URL such as file:\/\/\/Library\/pgAgent\/Desktop\/dynamic_javascript.jpg accessing a local image on the local computer being used (like you can make happen when you access your web browser&#8217;s File-&gt;Open File&#8230; functionality)<\/li>\n<li>as a <a target=_blank title='Data uri information from Wikipedia ... thanks' href='https:\/\/en.wikipedia.org\/wiki\/Data_URI_scheme'>data uri<\/a> value which is a way to fully define the image data there and then, using <a target=_blank title='base64 information from Wikipedia ... thanks' href='https:\/\/en.wikipedia.org\/wiki\/Base64'>base64<\/a> data<\/li>\n<\/ol>\n<p>What this data.uri Yahoo Yql web service is providing, is a way to create a data uri from an http: or https: URL definition of a media file (image in our thinking above) &#8230; but, please note there is a 25600 byte limit to the size of the media file.<\/p>\n<p>In our application today we show you an HTML <i>img<\/i> tag of the data on the parent page (the Firefox browser Firebug add on is showing you the resultant data uri) with a Javascript code scenario &#8230;<\/p>\n<p><code><br \/>\nvar thedatauri = 'data:image\/jpeg;charset=UTF-8;base64,&lt;!-- base64 data --&gt;';<br \/>\nvar wo=window.open('', 'imagename.jpg', 'top=400,left=400,width=200,height=200,resizable=yes');<br \/>\nwo.document.write('&lt;img src=\"' + thedatauri + '\" \/&gt;');<br \/>\n<\/code><\/p>\n<p> &#8230; arranged by today&#8217;s PHP code you could call <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/YQL\/DataUri\/data_uri_yql.php_GETME\" title='data_uri_yql.php'>data_uri_yql.php<\/a> or try a <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/YQL\/DataUri\/data_uri_yql.php\" title='Click picture'>live run<\/a>.  In that way the HTML <i>img<\/i> data of the resultant popup window has no reference to any particular address on the web and would be useful for document fidelity purposes perhaps, as we&#8217;ve discussed previously on the blog <a target=_blank title='Document fidelity blog postings here' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/document-fidelity'>here<\/a>, because there is no trail back regarding its metadata.<\/p>\n<p>Good links for information regarding this tutorial (thanks) are:<\/p>\n<ul>\n<li><a target=_blank href='http:\/\/developer.yahoo.com\/yql\/guide\/two-minute-tutorial.html' title='YQL Two Minute Tutorial'>YQL Two Minute Tutorial<\/a> from Yahoo<\/li>\n<li><a target=_blank href='http:\/\/en.wikipedia.org\/wiki\/Yahoo!_Query_Language' title='Yahoo! Query Language'>Yahoo! Query Language<\/a> from Wikipedia, as per quote above<\/li>\n<li><a target=_blank href='http:\/\/developer.yahoo.com\/yql\/' title='YQL Home Page'>YQL Home Page<\/a> from Yahoo<\/li>\n<li><a target=_blank href='https:\/\/developer.yahoo.com\/yql\/console\/#h=select+*+from+data.uri+where+url%3D%22http%3A%2F%2Fwww.rjmprogramming.com.au%2FMyBusinessUnidad%2FWelcome_files%2Flogo.jpg%22' title='YQL data.uri help'>YQL data.uri help<\/a> from Yahoo<\/li>\n<li><a target=_blank title='YQL JSON Parsing Help' href='http:\/\/developer.yahoo.com\/forum\/YQL\/yql-query-intermittently-returns-no-results\/1374521623593-fa4a3519-10ae-4a17-8fd4-6de45a159d6f'>YQL JSON Parsing Help<\/a> from YQL forum<\/li>\n<\/ul>\n<p>Another tool you should have in your armoury for jobs like this is the online JSON validator <a target=_blank title='JSON validator online' href='http:\/\/jsonlint.com\/'>here<\/a>.  A generic JSON approach to issues could be:<\/p>\n<ol>\n<li>Type the URL you were given into a web browser address bar and have a look at it<\/li>\n<li>Type the URL you were given into http:\/\/jsonlint.com\/ and have it validated<\/li>\n<li>Understand in your own mind what would be different about 1. to make it suitable<\/li>\n<li>Incorporate findings of 3. into massaging of data between file_get_contents and json_decode<\/li>\n<\/ol>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d16324' onclick='var dv=document.getElementById(\"d16324\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/?tag=yahoo-yql\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d16324' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d16353' onclick='var dv=document.getElementById(\"d16353\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/?tag=json\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d16353' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d17683' onclick='var dv=document.getElementById(\"d17683\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/?tag=image\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d17683' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d23025' onclick='var dv=document.getElementById(\"d23025\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/?tag=imagemagick\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d23025' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n","protected":false},"excerpt":{"rendered":"<p>ImageMagick is a great tool for image manipulations of web server image files as you would glean from ImageMagick and Three Ps Affine Transformation Tutorial as shown below. Well, today, we build on that previous Affine Transformation functionality, and still &hellip; <a href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/imagemagick-and-three-ps-charcoal-implode-quality-tutorial\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,37],"tags":[1714,281,1923,350,384,491,590,1658,677,707,752,896,913,916,932,1918,983,997,1012,1072,1095,1267,1299,1319],"class_list":["post-23025","post","type-post","status-publish","format-standard","hentry","category-elearning","category-tutorials","tag-affine","tag-css","tag-density","tag-document-fidelity","tag-emboss","tag-gimp","tag-image","tag-imagemagick","tag-korn-shell","tag-linux","tag-mathematics","tag-paintbrush","tag-pdf","tag-perl","tag-php","tag-pixel","tag-preview","tag-programming","tag-python","tag-rotation","tag-scaling","tag-the-three-ps","tag-transformation","tag-tutorial"],"_links":{"self":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/23025"}],"collection":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/comments?post=23025"}],"version-history":[{"count":2,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/23025\/revisions"}],"predecessor-version":[{"id":23027,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/23025\/revisions\/23027"}],"wp:attachment":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/media?parent=23025"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/categories?post=23025"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/tags?post=23025"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}