<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.dascent-sigils.com/index.php?action=history&amp;feed=atom&amp;title=Pocket_WebApps%2FQuote_Image_Maker</id>
	<title>Pocket WebApps/Quote Image Maker - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.dascent-sigils.com/index.php?action=history&amp;feed=atom&amp;title=Pocket_WebApps%2FQuote_Image_Maker"/>
	<link rel="alternate" type="text/html" href="https://wiki.dascent-sigils.com/index.php?title=Pocket_WebApps/Quote_Image_Maker&amp;action=history"/>
	<updated>2026-06-30T12:28:16Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://wiki.dascent-sigils.com/index.php?title=Pocket_WebApps/Quote_Image_Maker&amp;diff=1700&amp;oldid=prev</id>
		<title>Dascent-wiki at 07:58, 7 October 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.dascent-sigils.com/index.php?title=Pocket_WebApps/Quote_Image_Maker&amp;diff=1700&amp;oldid=prev"/>
		<updated>2025-10-07T07:58:04Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 03:58, 7 October 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l4&quot;&gt;Line 4:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 4:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;It runs entirely in the browser &amp;#039;&amp;#039;&amp;#039;no server, no database, no external uploads&amp;#039;&amp;#039;&amp;#039;. Everything stays on your device.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;It runs entirely in the browser &amp;#039;&amp;#039;&amp;#039;no server, no database, no external uploads&amp;#039;&amp;#039;&amp;#039;. Everything stays on your device.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;div class=&quot;isbtn&quot;&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[https://dascent.github.io/4ai/source/projects/quote-it/  Go to App]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/div&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Features==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Features==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Dascent-wiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.dascent-sigils.com/index.php?title=Pocket_WebApps/Quote_Image_Maker&amp;diff=1564&amp;oldid=prev</id>
		<title>Dascent-wiki: Created page with &quot;=Quote Image Maker= {{iscover|link=https://dascent.github.io/4ai/source/projects/quote-it/}} &#039;&#039;&#039;Quote Image Maker&#039;&#039;&#039; is a lightweight, responsive, client-side web application that allows you to create beautiful quote images for social media (Facebook posts, covers, etc.).    It runs entirely in the browser &#039;&#039;&#039;no server, no database, no external uploads&#039;&#039;&#039;. Everything stays on your device.  ==Features== * &#039;&#039;&#039;Canvas presets&#039;&#039;&#039;  * &#039;&#039;&#039;Facebook...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.dascent-sigils.com/index.php?title=Pocket_WebApps/Quote_Image_Maker&amp;diff=1564&amp;oldid=prev"/>
		<updated>2025-08-18T10:12:12Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;=Quote Image Maker= {{iscover|&lt;a href=&quot;/index.php/File:Screenshot-webapp.png&quot; title=&quot;File:Screenshot-webapp.png&quot;&gt;link=https://dascent.github.io/4ai/source/projects/quote-it/&lt;/a&gt;}} &amp;#039;&amp;#039;&amp;#039;Quote Image Maker&amp;#039;&amp;#039;&amp;#039; is a lightweight, responsive, client-side web application that allows you to create beautiful quote images for social media (Facebook posts, covers, etc.).    It runs entirely in the browser &amp;#039;&amp;#039;&amp;#039;no server, no database, no external uploads&amp;#039;&amp;#039;&amp;#039;. Everything stays on your device.  ==Features== * &amp;#039;&amp;#039;&amp;#039;Canvas presets&amp;#039;&amp;#039;&amp;#039;  * &amp;#039;&amp;#039;&amp;#039;Facebook...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Quote Image Maker=&lt;br /&gt;
{{iscover|[[File:Screenshot-webapp.png|link=https://dascent.github.io/4ai/source/projects/quote-it/]]}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Quote Image Maker&amp;#039;&amp;#039;&amp;#039; is a lightweight, responsive, client-side web application that allows you to create beautiful quote images for social media (Facebook posts, covers, etc.).  &lt;br /&gt;
&lt;br /&gt;
It runs entirely in the browser &amp;#039;&amp;#039;&amp;#039;no server, no database, no external uploads&amp;#039;&amp;#039;&amp;#039;. Everything stays on your device.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Canvas presets&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Facebook Post&amp;#039;&amp;#039;&amp;#039; (1080—1080)  &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Facebook Cover&amp;#039;&amp;#039;&amp;#039; (820—312)&lt;br /&gt;
&lt;br /&gt;
===Background options===  &lt;br /&gt;
* Built-in gradient and pattern library (Aurora, Sunset, Midnight, Mesh, Grid, etc.)  &lt;br /&gt;
* Upload your own background image (never leaves the browser session)&lt;br /&gt;
&lt;br /&gt;
===Quote editor===&lt;br /&gt;
* Type and position text anywhere on the canvas  &lt;br /&gt;
* Align left, center, or right  &lt;br /&gt;
* Choose from multiple &amp;#039;&amp;#039;&amp;#039;Google Fonts&amp;#039;&amp;#039;&amp;#039; (Montserrat, Playfair Display, Roboto Slab)  &lt;br /&gt;
* Adjust font size and color  &lt;br /&gt;
* Drag and drop positioning, with &amp;#039;&amp;#039;&amp;#039;Shift-drag for axis lock&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
* Text shadow for readability on busy backgrounds&lt;br /&gt;
&lt;br /&gt;
===Stickers / Icons&amp;lt;sup&amp;gt;NEW&amp;lt;/sup&amp;gt;=== &lt;br /&gt;
* Built-in icon library (heart, glasses, star, sparkles)  &lt;br /&gt;
* Upload custom icons (SVG/PNG)  &lt;br /&gt;
* Drag to reposition  &lt;br /&gt;
* Scale and rotate with sliders  &lt;br /&gt;
* Delete selected icon  &lt;br /&gt;
* Add unlimited icons  easy to extend the library by editing a single array&lt;br /&gt;
&lt;br /&gt;
===Export=== &lt;br /&gt;
* Generate crisp PNG images at exact pixel sizes  &lt;br /&gt;
* Safe local download (no cloud services involved)  &lt;br /&gt;
&lt;br /&gt;
===Controls=== &lt;br /&gt;
* Reset app state  &lt;br /&gt;
* Clear text  &lt;br /&gt;
* Delete selected icon  &lt;br /&gt;
* Download final design  &lt;br /&gt;
&lt;br /&gt;
===Responsive UI=== &lt;br /&gt;
* On desktop: options on the left, preview on the right  &lt;br /&gt;
* On mobile: preview on top, options below  &lt;br /&gt;
&lt;br /&gt;
==How it works==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select a &amp;#039;&amp;#039;&amp;#039;canvas size&amp;#039;&amp;#039;&amp;#039; (FB Post or FB Cover). &amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;Pick a &amp;#039;&amp;#039;background&amp;#039;&amp;#039; from the library or upload your own. &amp;lt;/li&amp;gt;  &lt;br /&gt;
&amp;lt;li&amp;gt;Enter your &amp;#039;&amp;#039;quote text&amp;#039;&amp;#039; and style it (font, size, color, alignment). &amp;lt;/li&amp;gt;  &lt;br /&gt;
&amp;lt;li&amp;gt;Drag the text box anywhere in the preview.&amp;lt;br&amp;gt;  &lt;br /&gt;
   - Hold &amp;#039;&amp;#039;&amp;#039;Shift&amp;#039;&amp;#039;&amp;#039; to lock dragging to X or Y axis. &amp;lt;/li&amp;gt;  &lt;br /&gt;
&amp;lt;li&amp;gt;Add &amp;#039;&amp;#039;&amp;#039;icons&amp;#039;&amp;#039;&amp;#039;: &amp;lt;br&amp;gt; &lt;br /&gt;
   - Choose from the dropdown library and click &amp;#039;&amp;#039;Add icon&amp;#039;&amp;#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
   - Or upload your own SVG/PNG sticker.&amp;lt;br&amp;gt;  &lt;br /&gt;
   - Click an icon to select it, then use sliders to resize/rotate. &amp;lt;br&amp;gt; &lt;br /&gt;
   - Drag it freely across the canvas. &amp;lt;br&amp;gt; &lt;br /&gt;
   - Press &amp;#039;&amp;#039;Delete Selected Icon&amp;#039;&amp;#039; to remove it.&amp;lt;/li&amp;gt;  &lt;br /&gt;
&amp;lt;li&amp;gt;When happy with the design, press &amp;#039;&amp;#039;&amp;#039;Download PNG&amp;#039;&amp;#039;&amp;#039; to save it locally.&amp;lt;/li&amp;gt;   &lt;br /&gt;
&amp;lt;/ol&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==Example Customizations==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Classic Quote Card&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
* Canvas: &amp;#039;&amp;#039;Facebook Post&amp;#039;&amp;#039;  &lt;br /&gt;
* Background: &amp;#039;&amp;#039;Aurora Gradient&amp;#039;&amp;#039;  &lt;br /&gt;
* Font: &amp;#039;&amp;#039;Playfair Display&amp;#039;&amp;#039; at 72px  &lt;br /&gt;
* Text: centered, white color  &lt;br /&gt;
* Sticker: small golden star in bottom corner  &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Playful Moodboard&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
* Canvas: &amp;#039;&amp;#039;Facebook Cover&amp;#039;&amp;#039;  &lt;br /&gt;
* Background: &amp;#039;&amp;#039;Custom photo upload&amp;#039;&amp;#039; &lt;br /&gt;
* Font: &amp;#039;&amp;#039;Montserrat&amp;#039;&amp;#039; bold, 60px  &lt;br /&gt;
* Text: aligned left, light pink color  &lt;br /&gt;
* Stickers: glasses icon near top, heart icon in corner, rotated 20°  &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Minimalist Design&amp;#039;&amp;#039;&amp;#039;  &lt;br /&gt;
* Canvas: &amp;#039;&amp;#039;Post&amp;#039;&amp;#039;  &lt;br /&gt;
* Background: &amp;#039;&amp;#039;Subtle Grid&amp;#039;&amp;#039; pattern  &lt;br /&gt;
* Font: &amp;#039;&amp;#039;Roboto Slab&amp;#039;&amp;#039; at 48px  &lt;br /&gt;
* Text: aligned right, dark gray color  &lt;br /&gt;
* No icons  &lt;br /&gt;
&lt;br /&gt;
==Extending the Icon Library==&lt;br /&gt;
&lt;br /&gt;
The app keeps a simple array in the JavaScript:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
const ICONS = [&lt;br /&gt;
  { id:&amp;#039;heart&amp;#039;, name:&amp;#039;Heart&amp;#039;, src: svgURI(`&amp;lt;svg ...&amp;gt;...&amp;lt;/svg&amp;gt;`) },&lt;br /&gt;
  { id:&amp;#039;glasses&amp;#039;, name:&amp;#039;Glasses&amp;#039;, src: svgURI(`&amp;lt;svg ...&amp;gt;...&amp;lt;/svg&amp;gt;`) }&lt;br /&gt;
];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add a new entry with:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;code&amp;gt;id: unique identifier&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;name: label shown in dropdown&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;src: inline SVG or Base64-encoded PNG/WebP&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;{ id:&amp;#039;leaf&amp;#039;, name:&amp;#039;Leaf&amp;#039;, src: svgURI(`&amp;lt;svg xmlns=&amp;#039;http://www.w3.org/2000/svg&amp;#039; ...&amp;gt;&amp;lt;/svg&amp;gt;`) }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Tech Stack==&lt;br /&gt;
* Pure HTML5, CSS3, and JavaScript&lt;br /&gt;
* No build tools, no frameworks&lt;br /&gt;
* Uses Canvas API for rendering&lt;br /&gt;
* Google Fonts integration&lt;br /&gt;
* Entirely client-side (safe, private, offline-friendly)&lt;br /&gt;
&lt;br /&gt;
==License==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;MIT License feel free to use, modify, and share. Contributions welcome!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{Ai/tags|Ai/ChatGPT|tg-ai-chatgpt}}&lt;/div&gt;</summary>
		<author><name>Dascent-wiki</name></author>
	</entry>
</feed>