A while back we presented a series of web application ideas that do away with Javascript (ie. only needing HTML and CSS) to perform some functionality of interest. In that series we finished up with Missing Javascript Audio on Unmute Tutorial where through this series we touched on โฆ
- CSS3 @keyframes rules we first talked about at CSS3 @keyframes Rule Primer Tutorial that assist with animations that we can make work via โฆ
- CSS3 transitions for scheduled functionality (weโd have used Javascript setTimeout (and setInterval) methods to cover the same โterritoryโ) we first talked about at CSS3 Transition Primer Tutorial โฆ specified with CSS Criteria involving โฆ
โฆ and these feature today with our functionality extensions to yesterdayโs Gimp Guillotine Follow Up PDF Slideshow and Video Tutorial where, again, we have a โpiece of code modelled on a big long โtemplateโ piece of HTML that we make substitutions into to create the functionalityโ.
We found that this was all fine and good to create an overall animation โblobโ of webpage activity, but what was in that โtemplateโ didnโt help reflect GIMP Guillotine left and top โoffsetsโ within that animation. To do this with our HTML div element, this, along with the change of background content, made us introduce some Javascript DOM changes where โฆ
- [divObject].style.backgroundImage=โurl(โโ + dataURIofImageVar + โโ)โ;
- [divObject].style.backgroundPosition=โ โ + parent.document.getElementById(โlefttopโ).value.split(โ,โ)[eval(iparlist * 2)] + โpx โ + parent.document.getElementById(โlefttopโ).value.split(โ,โ)[eval(iparlist * 2 + 1)] + โpxโ;
โฆ as in the Javascript function controlled by setTimeout timer calls (to help animate) โฆ
var parlist=['mondrian-1504681_640-0-0png','mondrian-1504681_640-1-0png','mondrian-1504681_640-2-0png','mondrian-1504681_640-2-1png','mondrian-1504681_640-2-2png'];
var divo=null;
var iparlist=0;
function workit() {
if (divo == null) {
divo=document.getElementsByTagName('div')[0];
}
if (iparlist >= parlist.length) iparlist=0;
divo.style.backgroundRepeat='no-repeat';
divo.style.backgroundPosition=' ' + parent.document.getElementById('lefttop').value.split(',')[eval(iparlist * 2)] + 'px ' + parent.document.getElementById('lefttop').value.split(',')[eval(iparlist * 2 + 1)] + 'px';
divo.style.backgroundImage="url('" + parent.document.getElementById(parlist[iparlist]).src + "')";
iparlist++;
setTimeout(workit, 6000);
}
setTimeout(workit, 500);
โฆ the act of which starts the video below (if not playing click here for alternate playing method) โฆ
Letโs catch up with some more URLs showing (and sharing) some recent scenarios below โฆ
Hopefully you can see more of what we mean at a liverunโs PHP gimp_guillotine_followup
php today changed in thisway.
Previous relevant Gimp Guillotine Follow Up CSS keyframes Transition Tutorial is shown below.
As the blog posting title intimates, adding onto yesterdayโs Gimp Guillotine Follow Up Javascript DOM Animation Tutorial, todayโs work looks at functionality to help create โฆ
- PDF slideshow
- Inhouse style slideshow
- Video
โฆ and the top and bottom of these depend on, respectively, the amazing, the stupendous โฆ
- convert (by ImageMagick)
- ffmpeg
โฆ that are looked for on the operating system (or web server) you are running the Gimp Guillotine Follow Up web application from, and if found offer HTML input type=submit methods of submitting the image file specification form.
Weโve talked about the fade in, fade out style of ffmpeg video before when we presented Firefox Inspector Debugging via Network Tab Primer Tutorial but today with variability within image sizes we found the additional switches like in the command below, necessary โฆ
ffmpeg -loop 1 -t 5 -i /Applications/MAMP/htdocs/mondrian-1504681_640-0-0.png -loop 1 -t 5 -i /Applications/MAMP/htdocs/mondrian-1504681_640-1-0.png -loop 1 -t 5 -i /Applications/MAMP/htdocs/mondrian-1504681_640-2-0.png -loop 1 -t 5 -i /Applications/MAMP/htdocs/mondrian-1504681_640-2-1.png -loop 1 -t 5 -i /Applications/MAMP/htdocs/mondrian-1504681_640-2-2.png -filter_complex "[0:v]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1,fade=t=out:st=4:d=1[v0]; [1:v]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v1]; [2:v]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v2]; [3:v]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v3]; [4:v]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v4]; [v0][v1][v2][v3][v4]concat=n=5:v=1:a=0,format=yuv420p[v]" -map "[v]" /Applications/MAMP/htdocs/gimp_guillotine.mp4
โฆ resulting in (if not playing click here for alternate playing method) โฆ
The PDF slideshow creation is a doddle for ImageMagick, an example of a command line (via PHP exec) command being โฆ
convert /Applications/MAMP/htdocs/mondrian-1504681_640-0-0.png /Applications/MAMP/htdocs/mondrian-1504681_640-1-0.png /Applications/MAMP/htdocs/mondrian-1504681_640-2-0.png /Applications/MAMP/htdocs/mondrian-1504681_640-2-1.png /Applications/MAMP/htdocs/mondrian-1504681_640-2-2.png /Applications/MAMP/htdocs/gimp_guillotine.pdf
โฆ resulting in (if not showing click here for alternate method) โฆ
And our Internal Slideshow is a piece of code modelled on a big long โtemplateโ piece of HTML that we make substitutions into to create the functionality โฆ
Again, we hope you can see more of what we mean at a liverunโs PHP gimp_guillotine_followup
php today changed in thisway.
Previous relevant Gimp Guillotine Follow Up Javascript DOM Animation Tutorial is shown below.
Adding to yesterdayโs Gimp Guillotine Follow Up Email Attachment Tutorial we now want to add an โonions of the 4th dimensionโ layer on top โfeelโ to all this, by starting to think about animation functionality. Weโre going to start out quite simply, and the simplest animation approach we can think of is โฆ
- have access to a bunch of image data URIs โฆ check โฆ
- either โฆ
- progressively show โฆ or โฆ
- one at a time show
โฆ this imagery at a point of time as a (pseudo Javascript) โฆ
document.body.backgroundImage="URL('" + thatDataURIVar + "')"
โฆ idea the timing of which can be controlled by the Javascript setTimeout timer method
As you can imagine โone at a timeโ is a relative doddle, but โprogressively showโ is not quite such a doddle. But it is an uncleโs doddle if ahead of time you had โฆ
- set up an array and an index variable pointing to a relevant index into it โฆ
var canvascset=[];
var icanvascset=0;
var elem=document.getElementById('mycanvas');
var context=elem.getContext('2d'); - wherever in the code as it was, you had used the [canvasContext].drawImage you canvascset.push([thatCommand]) adding onto that array as per โฆ
canvascset.push("context.drawImage(ourdocumentgetElementById('img" + eval(-1 + myimagec.split(',' + pfix + '-' + icol + '-' + irow + ext)[0].split(',').length) + "'), " + left + "," + top + ");");
context.drawImage(ourdocumentgetElementById('img' + eval(-1 + myimagec.split(',' + pfix + '-' + icol + '-' + irow + ext)[0].split(',').length)), left, top); - then set up some โaโ links using the Javascript function featuring setTimeout timing functionality, and good olโ eval as per โฆ
function canvasanimation() {
if (canvascset.length > 0 && icanvascset >= 0) {
if (icanvascset <= 0) {
icanvascset=0;
context.clearRect(0, 0, elem.width, elem.height);
eval(canvascset[0]);
document.body.style.backgroundImage=\"url('\" + elem.toDataURL() + \"')\";
icanvascset++;
if (clearalot) {
setTimeout(canvasanimation, 600);
} else {
setTimeout(canvasanimation, 3000);
}
} else if (icanvascset > canvascset.length) {
icanvascset=0;
if (clearalot) {
setTimeout(canvasanimation, 1200);
} else {
setTimeout(canvasanimation, 6000);
}
} else {
if (clearalot) context.clearRect(0, 0, elem.width, elem.height);
eval(canvascset[icanvascset]);
document.body.style.backgroundImage=\"url('\" + elem.toDataURL() + \"')\";
icanvascset++;
if (clearalot) {
setTimeout(canvasanimation, 600);
} else {
setTimeout(canvasanimation, 3000);
}
}
} else if (canvascset.length > 0) {
icanvascset=0;
}
}
โฆ noting how the animations can be stopped by setting that indexing variable negative (at other functionality events)
The joy of this Javascript DOM animation approach is that the creation of any new media is avoided, hence our assertion that this is perhaps the easiest animation idea we can think of. More to come, though.
Previous relevant Gimp Guillotine Follow Up Email Attachment Tutorial is shown below.
Weโve got some good news for followers of the latest thread of blog postings following up on Gimp Guillotine usage thoughts as exemplified by yesterdayโs Gimp Guillotine Follow Up Table and Image Map Tutorial efforts. Up to today, the โaccountabilityโ score was not so great without a live run opportunity to show you what we mean. But today weโve decided to open up all but the โGIMP Listeningโ aspects of this web application live to the rjmprogramming.com.au domain. Why the change of heart? Well, now itโs worth it, with the sharing email dual options โฆ
- email a canvas element based overall image view as an email attachment โฆ as well as, now, by appending a โ+โ to your email declaration โฆ
- email all that you are seeing on the screen at the time as an email attachment
โฆ because, now, we believe we have a useful enough โtoolโ for collaboration purposes, not that we are saying it is no longer a โuse this PHP with a local web server like MAMPโ proposition as well. It is, but you can learn a bit in advance trying out what youโve been seeing us talk about here over the last few days, because weโve also uploaded to the rjmprogramming.com.au domain those Piet Mondrian inspired image jigsaw parts which Pixabay webpage, thanks, helped us create via GIMPโs โImage -> Transform -> Guillotineโ functionality quite a few days ago now.
The other issue which makes all this feasible is the involvement of PHP (though perhaps HTML and Javascript and Ajax might swing it too) being able to express the web applicationโs image (img elements) totally as data URIs, and so be totally mobile and transportable to email with HTML email attachments, which continue their functionality, being as they donโt require the http nor https protocol absolute URL need.
Another aspect that might have been gnawing away at the patience of people following this blog posting thread was the dumbness of the HTML textarea element weโd presented as a displayer of image jigsaw filename information. To us, to make this part of the web application much more useful was to turn the HTML textarea element into an HTML select (dropdown) โmultipleโ mode element which allows the user to work with the โdisplay subsetโ of the whole set (though behind the scenes they are all there courtesy of the CSS usage of visibility:hidden; (leaving in whitespace) rather than display:none; (scrunching up whitespace) styling which you can read more about at CSS Style Display and Visibility Tall Poppies Tutorial) as well.
This all means we can show you some URLs showing (and sharing) some of these scenarios below too, which we will now, rather than later โฆ know youโre in a hurry โฆ
We hope you can see more of what we mean at a liverunโs PHP gimp_guillotine_followup
php today changed in thisway.
Previous relevant Gimp Guillotine Follow Up Table and Image Map Tutorial is shown below.
The recent Gimp Guillotine Follow Up Canvas Tutorial had us with โjigsaw pieced togetherโ image representations for โฆ
- Div Margin
- Canvas
โฆ and today we add to that โฆ
- Table
- Image Map
โฆ inspired by existant GIMP functionalities, respectively โฆ
- Filters -> Web -> Sliceโฆ
- Filters -> Web -> Image Mapโฆ
We service these new functionalities by new โaโ link hashtags. We also add to the viewing adaptability by encasing all these display options within the (introduced with HTML5) details tag and its nested summary tag โrevealersโ. These great HTML elements can help clarify situations where there are many choices but the user is in all likelihood wanting to focus on just one at a time. These details/summary tags are initially set โclosedโ for lack of clutter but as a user clicks on an associated โaโ link hashtag they are โopenedโ on the fly via (the (pseudo) Javascript) โฆ
document.getElementById([detailTagObjectID]).open=true;
So see how we got to the new PHP gimp_guillotine_followupphp today changed in thisway and, again, it is more than likely you will use this PHP with a local web server like MAMP.
Previous relevant Gimp Guillotine Follow Up Canvas Tutorial is shown below.
The second of the non-primer tutorial themes to improve and build on yesterdayโs Gimp Guillotine Follow Up Div Margin Tutorial โฆ
HTML div element housing HTML img elements (no position: absolute like we like so much for overlay work) using style property margin-left and HTML br (line break) element (which sometimes requires negative margin-top tweaking)
โฆ involves the ever useful canvas element introduced with HTML5 as per โฆ
HTML canvas element object's drawImage method helps draw HTML img elements positionally so as to recreate the original image look from constituent "jigsaw image element" HTML img elements
Letโs take a step back, reread Emoji Border or Background Image Canvas Tutorial โฆ
Whatโs the big deal with the HTML5 canvas element? For a few things โฆ
- the HTML5 canvas element right click or two finger gesture functionality includes Copy options โฆ
- the canvas can collect both images and text and be able to summarize that into โฆ
- a single image can be derived from the canvas element, encapsulating its contents โฆ so that โฆ
- the canvas element can export that graphical content into a data URI that involves no absolute URLs โฆ and so ties in nicely with โฆ
- email attachments can go hand in hand with the canvas element via a serverside function such as PHPโs mail function to enhance sharing functionalities
โฆ because it is both pertinent to this project and shows how the canvas element is such a great generic โgraphicโ sharing element. Express all its content by data URIs and you have a totally โmobileโ and transportable container of graphical or pixel data.
The PHP gimp_guillotine_followupphp today changed for canvas use thisway and it is more than likely you will use this PHP with a local web server like MAMP. We hope this gives you ideas, and please feel free to download this PHP.
Previous relevant Gimp Guillotine Follow Up Div Margin Tutorial is shown below.
The first non-primer tutorial theme to improve and build on the recent Gimp Guillotine Follow Up Primer Tutorial are a series of representations to put the Gimp Guillotine โjigsaw image piecesโ back together to make humpty dumpty โฆ down, Nala โฆ representations of the original image back for the user. Sounds a bit counterproductive, but these are all steps in a process to eventually be able to do quite a bit we hope. Todayโs โfirst cab off the rankโ representation is โฆ
HTML div element housing HTML img elements (no position: absolute like we like so much for overlay work) using style property margin-left and HTML br (line break) element (which sometimes requires negative margin-top tweaking)
Gasp, how rudimentary! But sometimes the rudimentary things are the best. We display this โpieced back together original imageโ data (from the data you guillotined (which may not be the whole picture, as with todayโs data we test)) in three different ways โฆ
- an โaโ link hashtag navigates the user below the fold to the โpieced back together original imageโ
- another โaโ link hashtag navigates the user to a new window with the โpieced back together original imageโ
- a new type=submit name=divmarginuse button of the HTML form is an alternate processing option that automatically โunderlaysโ (you say underlay, I say overlay, we go) the โpieced back together original imageโ under whatever webpage data appears at the top left, with an opacity less than 1 (ie. 0.5 to show with some transparency), this โunderlayโ being position:absolute but not asking that of an pre-existant webpage data โฆ it is added dynamically via Javascript DOM techniques
This last optionโs usage we find pretty efficient, and you can read more on this at HTML Multiple Form Multiple Submit Buttons Primer Tutorial. As you might surmise, weโll be adding more of these as time goes on, and we dip our toes into the myriad number of representations of this โpieced back together original imageโ data we visit.
The PHP gimp_guillotine_followupphp today changed thisway it is more than likely you will use this PHP with a local web server like MAMP (though into the future we may offer a command line mode of use).
Hopefully todayโs tutorial picture makes what we are talking about here more clear for you.
Previous relevant Gimp Guillotine Follow Up Primer Tutorial is shown below.
Still on yesterdayโs Gimp Image Map HTML Primer Tutorialโs Gimp themes do you remember us saying, relating to GIMP โฆ
โฆ precursor to being able to break an image into component parts via โImage -> Transform -> Guillotineโ or the more enticing, for those web developers out there, โFilters -> Web -> Sliceโ which effectively does what Guillotine does and writes out some HTML in the form of an HTML table element that includes some โaโ link opportunities to do something special for individual images of the new โimage jigsawโ surrounded by Guides
โฆ down below? Well, yes, today is a revisit to the โGuillotineโ bit of that, because it is all well and good to use โFilters -> Web -> Sliceโ for a fait accompli HTML table โslicingโ approach, but as you can imagine, there are lots of reasons, such as responsive design, why you might want to stop at the โGuillotineโ โjust give me the images, manpersonโ stage and from there, do your own thingthang, manperson.
Weโre just starting down the road of this today in our โPrimerโ tutorial, just being able to either โฆ
- image creation method โฆ
- start GIMP and listen out for new images created โฆ weโre hoping via โImage -> Transform -> Guillotineโ โฆ or โฆ
- specify your own filespec of images โฆ weโre hoping got there via โImage -> Transform -> Guillotineโ
- list those image files โฆ
- show those image files
GIMP being a desktop application, you might have guessed that weโd use a serverside language for this work, and yes, weโre using PHP gimp_guillotine_followupphp today, but donโt show you any live run links because it is more than likely you will use this PHP with a local web server like MAMP (though into the future we may offer a command line mode of use).
So please feel free to download that PHP and/or see its approach via todayโs tutorial picture.
Previous relevant Gimp Image Map HTML Primer Tutorial is shown below.
As we intimated yesterday with Gimp Guides to HTML Primer Tutorial regarding the GIMP image editorโs โFilters -> Webโ menu โฆ
โฆ you would also see an โImage Mapโ option helping out in a similar fashion to the stupendous mobilefish functionality.
โฆ and so we are here today to show you how that functionality works via a PDFslideshow for your perusal. There are options to shape what goes into the resultant HTMLโs map elementโs area (as rectangle or ellipse or polygon) tag href property link types as per โฆ
โฆ as a very extensive ideas list on top of options to define event logic for โฆ
- onmouseover
- onmouseout
- onfocus
- onblur
โฆ and that there is the option to define exact co-ordinates, and to define the alt attribute and HTML iframe name as applicable, also.
Weโll leave you with the resultant HTML we had GIMP create for us as a result of the goings on in that PDF slideshow (noting that the only adjustment to HTML in out TextWrangler editing session was to point at the image img element src attribute location properly), and we hope this is of benefit for you โฆ
<img src="mondrian-1504681_640.jpg" width="640" height="480" border="0" usemap="#map" />
<map name="map">
<!-- #$-:Image map file created by GIMP Image Map plug-in -->
<!-- #$-:GIMP Image Map plug-in by Maurits Rijk -->
<!-- #$-:Please do not edit lines starting with "#$" -->
<!-- #$VERSION:2.3 -->
<!-- #$AUTHOR:User -->
<area shape="rect" coords="0,1,36,132" href="mailto:?body=w_1_1&subject=Mondrian%20Composition%20with%20Read%20Yellow%20and%20Blue" />
<area shape="rect" coords="51,0,118,128" href="mailto:?body=y_2_1&subject=Mondrian%20Composition%20with%20Red%20Yellow%20and%20Blue" />
<area shape="rect" coords="136,1,295,133" href="mailto:?body=b_3_1&subject=Mondrian%20Composition%20with%20Red%20Yellow%20and%20Blue" />
<area shape="rect" coords="310,1,500,132" href="mailto:?body=r_4_1&subject=Mondrian%20Composition%20with%20Red%20Yellow%20and%20Blue" />
<area shape="rect" coords="514,0,566,131" href="mailto:?body=y_5_1&subject=Mondrian%20Composition%20with%20Red%20Yellow%20and%20Blue" />
<area shape="rect" coords="583,1,596,130" href="mailto:?body=w_6_1&subject=Mondrian%20Composition%20with%20Red%20Yellow%20and%20Blue" />
<area shape="rect" coords="0,146,36,293" href="mailto:?body=w_1_2&subject=Mondrian%20Composition%20with%20Red%20Yellow%20and%20Blue" />
<area shape="rect" coords="50,145,119,294" href="mailto:?body=w_2_2&subject=Mondrian%20Composition%20with%20Red%20Yellow%20and%20Blue" />
<area shape="rect" coords="134,146,295,292" href="mailto:?body=w_3_2&subject=Mondrian%20Composition%20with%20Red%20Yellow%20and%20Blue" />
<area shape="rect" coords="310,146,375,294" href="mailto:?body=w_4_2&subject=Mondrian%20Composition%20with%20Red%20Yellow%20and%20Blue" />
<area shape="rect" coords="391,147,498,294" href="mailto:?body=w_5_2&subject=Mondrian%20Composition%20with%20Red%20Yellow%20and%20Blue" />
<area shape="rect" coords="514,144,567,294" href="mailto:?body=r_6_2&subject=Mondrian%20Composition%20with%20Red%20Yellow%20and%20Blue" />
<area shape="rect" coords="582,146,597,385" href="mailto:?body=w_7_2&subject=Mondrian%20Composition%20with%20Red%20Yellow%20and%20Blue" />
<area shape="rect" coords="0,309,36,479" href="mailto:?body=w_1_3&subject=Mondrian%20Composition%20with%20Red%20Yellow%20and%20Blue" />
<area shape="rect" coords="51,308,119,386" href="mailto:?body=w_2_3&subject=Mondrian%20Composition%20with%20Red%20Yellow%20and%20Blue" />
<area shape="rect" coords="133,307,374,385" href="mailto:?body=r_3_3&subject=Mondrian%20Composition%20with%20Red%20Yellow%20and%20Blue" />
<area shape="rect" coords="390,307,499,385" href="mailto:?body=w_4_3&subject=Mondrian%20Composition%20with%20Red%20Yellow%20and%20Blue" />
<area shape="rect" coords="514,309,569,384" href="mailto:?body=y_5_3&subject=Mondrian%20Composition%20with%20Red%20Yellow%20and%20Blue" />
<area shape="rect" coords="51,399,118,481" href="mailto:?body=b_2_4&subject=Mondrian%20Composition%20with%20Red%20Yellow%20and%20Blue" />
<area shape="rect" coords="132,400,375,479" href="mailto:?body=y_3_4&subject=Mondrian%20Composition%20with%20Red%20Yellow%20and%20Blue" />
<area shape="rect" coords="390,400,568,481" href="mailto:?body=w_4_4&subject=Mondrian%20Composition%20with%20Red%20Yellow%20and%20Blue" />
<area shape="rect" coords="582,399,597,479" href="mailto:?body=w_5_4&subject=Mondrian%20Composition%20with%20Red%20Yellow%20and%20Blue" />
</map>
Previous relevant Gimp Guides to HTML Primer Tutorial is shown below.
The great GIMP image editor has several ways to create Guides, which are the precursor to being able to break an image into component parts via โImage -> Transform -> Guillotineโ or the more enticing, for those web developers out there, โFilters -> Web -> Sliceโ which effectively does what Guillotine does and writes out some HTML in the form of an HTML table element that includes some โaโ link opportunities to do something special for individual images of the new โimage jigsawโ surrounded by Guides. Within the options of that last menu you would also see an โImage Mapโ option helping out in a similar fashion to the stupendous mobilefish functionality.
With this in mind, we almost immediately thought of the great Piet Mondrian and his rectangle paintings in primary colours, wondering if by now you could get image downloads of his work, given he died some time ago now. And yes, there at this Pixabay webpage, thanks, we were able to do that and download an image version of โComposition with Red Yellow and Blueโ to open with GIMP.
Which ways, then, in GIMP, can you create Guides?
- precise Horizontal or Vertical position specification in pixels (via Image -> Guides -> New Guideโฆ) or percentage (via Image -> Guides -> New Guide (by Percent)โฆ) values
- position via a Selection (via Image -> Guides -> New Guides from Selection) โฆ and todayโs method of choice โฆ
- user long hover then drag of the rulers at the top and left for dynamic Horizontal and Vertical Guides respectively
Best for this is that you can see us doing this with YouTube video we made for the purpose on our MacBook Pro using QuickTime Player โFile -> New Screen Recordingโ resultant presentation you can play below.
โฆ and the resultant HTML code snippet, including our bits, produced looked like โฆ
<!--HTML SNIPPET GENERATED BY GIMP
WARNING!! This is NOT a fully valid HTML document, it is rather a piece of
HTML generated by GIMP's py-slice plugin that should be embedded in an HTML
or XHTML document to be valid.
Replace the href targets in the anchor (<a >) for your URLS to have it working
as a menu.
Thanks for viewing.
-->
<table cellpadding="0" border="0" cellspacing="0">
<tr>
<td><img alt=" " src="blue_0_0.jpg" style="width: 51px; height: 4px; border-width: 0px;"></td>
<td><img alt=" " src="blue_0_1.jpg" style="width: 70px; height: 4px; border-width: 0px;"></td>
<td><img alt=" " src="blue_0_2.jpg" style="width: 11px; height: 4px; border-width: 0px;"></td>
<td><img alt=" " src="blue_0_3.jpg" style="width: 164px; height: 4px; border-width: 0px;"></td>
<td><img alt=" " src="blue_0_4.jpg" style="width: 95px; height: 4px; border-width: 0px;"></td>
<td><img alt=" " src="blue_0_5.jpg" style="width: 110px; height: 4px; border-width: 0px;"></td>
<td><img alt=" " src="blue_0_6.jpg" style="width: 139px; height: 4px; border-width: 0px;"></td>
</tr>
<tr>
<td><img alt=" " src="blue_1_0.jpg" style="width: 51px; height: 128px; border-width: 0px;"></td>
<td><a href="#"><img alt=" " src="blue_1_1.jpg" style="width: 70px; height: 128px; border-width: 0px;"></a></td>
<td><a href="#"><img alt=" " src="blue_1_2.jpg" style="width: 11px; height: 128px; border-width: 0px;"></a></td>
<td><a title='blue' onclick="alert('Am I blue?');" href="#"><img alt=" " src="blue_1_3.jpg" style="width: 164px; height: 128px; border-width: 0px;"></a></td>
<td><a href="#"><img alt=" " src="blue_1_4.jpg" style="width: 95px; height: 128px; border-width: 0px;"></a></td>
<td><a href="#"><img alt=" " src="blue_1_5.jpg" style="width: 110px; height: 128px; border-width: 0px;"></a></td>
<td><img alt=" " src="blue_1_6.jpg" style="width: 139px; height: 128px; border-width: 0px;"></td>
</tr>
<tr>
<td><img alt=" " src="blue_2_0.jpg" style="width: 51px; height: 14px; border-width: 0px;"></td>
<td><a href="#"><img alt=" " src="blue_2_1.jpg" style="width: 70px; height: 14px; border-width: 0px;"></a></td>
<td><a href="#"><img alt=" " src="blue_2_2.jpg" style="width: 11px; height: 14px; border-width: 0px;"></a></td>
<td><a href="#"><img alt=" " src="blue_2_3.jpg" style="width: 164px; height: 14px; border-width: 0px;"></a></td>
<td><a href="#"><img alt=" " src="blue_2_4.jpg" style="width: 95px; height: 14px; border-width: 0px;"></a></td>
<td><a href="#"><img alt=" " src="blue_2_5.jpg" style="width: 110px; height: 14px; border-width: 0px;"></a></td>
<td><img alt=" " src="blue_2_6.jpg" style="width: 139px; height: 14px; border-width: 0px;"></td>
</tr>
<tr>
<td><img alt=" " src="blue_3_0.jpg" style="width: 51px; height: 147px; border-width: 0px;"></td>
<td><a href="#"><img alt=" " src="blue_3_1.jpg" style="width: 70px; height: 147px; border-width: 0px;"></a></td>
<td><a href="#"><img alt=" " src="blue_3_2.jpg" style="width: 11px; height: 147px; border-width: 0px;"></a></td>
<td><a href="#"><img alt=" " src="blue_3_3.jpg" style="width: 164px; height: 147px; border-width: 0px;"></a></td>
<td><a href="#"><img alt=" " src="blue_3_4.jpg" style="width: 95px; height: 147px; border-width: 0px;"></a></td>
<td><a title='Blue' onclick="alert('Am i Blue?');" href="#"><img alt=" " src="blue_3_5.jpg" style="width: 110px; height: 147px; border-width: 0px;"></a></td>
<td><img alt=" " src="blue_3_6.jpg" style="width: 139px; height: 147px; border-width: 0px;"></td>
</tr>
<tr>
<td><img alt=" " src="blue_4_0.jpg" style="width: 51px; height: 107px; border-width: 0px;"></td>
<td><a href="#"><img alt=" " src="blue_4_1.jpg" style="width: 70px; height: 107px; border-width: 0px;"></a></td>
<td><a href="#"><img alt=" " src="blue_4_2.jpg" style="width: 11px; height: 107px; border-width: 0px;"></a></td>
<td><a href="#"><img alt=" " src="blue_4_3.jpg" style="width: 164px; height: 107px; border-width: 0px;"></a></td>
<td><a href="#"><img alt=" " src="blue_4_4.jpg" style="width: 95px; height: 107px; border-width: 0px;"></a></td>
<td><a href="#"><img alt=" " src="blue_4_5.jpg" style="width: 110px; height: 107px; border-width: 0px;"></a></td>
<td><img alt=" " src="blue_4_6.jpg" style="width: 139px; height: 107px; border-width: 0px;"></td>
</tr>
<tr>
<td><img alt=" " src="blue_5_0.jpg" style="width: 51px; height: 78px; border-width: 0px;"></td>
<td><a title='BLUE' onclick="alert('Am i BLUE?');" href="#"><img alt=" " src="blue_5_1.jpg" style="width: 70px; height: 78px; border-width: 0px;"></a></td>
<td><a href="#"><img alt=" " src="blue_5_2.jpg" style="width: 11px; height: 78px; border-width: 0px;"></a></td>
<td><a href="#"><img alt=" " src="blue_5_3.jpg" style="width: 164px; height: 78px; border-width: 0px;"></a></td>
<td><a href="#"><img alt=" " src="blue_5_4.jpg" style="width: 95px; height: 78px; border-width: 0px;"></a></td>
<td><a href="#"><img alt=" " src="blue_5_5.jpg" style="width: 110px; height: 78px; border-width: 0px;"></a></td>
<td><img alt=" " src="blue_5_6.jpg" style="width: 139px; height: 78px; border-width: 0px;"></td>
</tr>
<tr>
<td><img alt=" " src="blue_6_0.jpg" style="width: 51px; height: 2px; border-width: 0px;"></td>
<td><img alt=" " src="blue_6_1.jpg" style="width: 70px; height: 2px; border-width: 0px;"></td>
<td><img alt=" " src="blue_6_2.jpg" style="width: 11px; height: 2px; border-width: 0px;"></td>
<td><img alt=" " src="blue_6_3.jpg" style="width: 164px; height: 2px; border-width: 0px;"></td>
<td><img alt=" " src="blue_6_4.jpg" style="width: 95px; height: 2px; border-width: 0px;"></td>
<td><img alt=" " src="blue_6_5.jpg" style="width: 110px; height: 2px; border-width: 0px;"></td>
<td><img alt=" " src="blue_6_6.jpg" style="width: 139px; height: 2px; border-width: 0px;"></td>
</tr>
</table>
We hope you find these GIMP โSlice and Diceโ webpage creation ideas of interest.
If this was interesting you may be interested in this too.
If this was interesting you may be interested in this too.
If this was interesting you may be interested in this too.
If this was interesting you may be interested in this too.
If this was interesting you may be interested in this too.
If this was interesting you may be interested in this too.
If this was interesting you may be interested in this too.
If this was interesting you may be interested in this too.
If this was interesting you may be interested in this too.
If this was interesting you may be interested in this too.