Draw a trololologram Your challenge here is to draw a trololologram.

You can choose any language.

The answer with more upvotes and the one that exploits more holes wins.

Rules for valid answers:


You can't use any network resource or external file (except the source-code)
You can't post someone else's answer
You can't have it stored in any image format or pre-rendered (including base64 data:// uri's and any form of ascii art).
You can't store the image in any database.
You can't simply print/echo 'trololologram' (case insensitive)
Explain your answers and what holes you exploited.
The code must render the trolologram on the screen (minimum size of 90x90) and must be with a black border and white background. The rendered version can't "be invisible" or "hidden behind the screen" or similar.
The image must show in the screen. It can't output the code to a file or anything similar (/dev/null doesn't count and virtual screens/viewports also don't count).


The main goal is to twist the rules and bend them at your own will and stil render a trololologram on screen.

Have fun!
For this challenge, I am posting five programs in this answer, all in Java.
Program 1

You can't simply print/echo 'trololologram' (case insensitive)

public class JustPrintIt {
    public static void main(String[] args) {
        System.out.println(&quot;trololologram&quot;);
    }
}


Program 2

You can't [...] pre-rendered ([...] and any form of ascii art).

public class AsciiArt {
    public static void main(String[] args) {
        System.out.println(
            &quot;    ########################       \n&quot; +
            &quot;  ##                        #      \n&quot; +
            &quot;  #                          #     \n&quot; +
            &quot; #                            ##   \n&quot; +
            &quot; #                              #  \n&quot; +
            &quot; #                              #  \n&quot; +
            &quot;  #                            #   \n&quot; +
            &quot;  #                          ##    \n&quot; +
            &quot;  #                     #####      \n&quot; +
            &quot;  #            #########           \n&quot; +
            &quot;   ############                    \n&quot;);
    }
}


Program 3

You can't use any network resource or external file (except the source-code)
You can't have it stored in any image format or pre-rendered (including base64 data:// uri's [...]).
You can't store the image in any database.
The code must render the trolologram on the screen [...].
The image must show in the screen. It can't output the code to a file [...].

import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Base64;
import javax.imageio.ImageIO;

public class DownloadAndStore {
    public static void main(String[] args) throws IOException, ClassNotFoundException, SQLException {
        String url = &quot;http://img171.imageshack.us/img171/8555/trolologramw400.jpg&quot;;
        BufferedImage im = ImageIO.read(new URL(url));
        ImageIO.write(im, &quot;png&quot;, new File(&quot;trolologram.png&quot;));
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        ImageIO.write(im, &quot;png&quot;, baos);

        String d = &quot;data://&quot; + new String(Base64.getEncoder().encode(baos.toByteArray()));
        Class.forName(&quot;com.mysql.jdbc.Driver&quot;);
        try (Connection con = DriverManager.getConnection(&quot;jdbc:mysql://localhost:3306&quot;, &quot;root&quot;, &quot;root&quot;)) {
            try (PreparedStatement ps = con.prepareStatement(&quot;CREATE DATABASE troll&quot;)) {
                ps.executeUpdate();
            } catch (SQLException e) {
                if (!e.getMessage().contains(&quot;database exists&quot;)) throw e;
            }
            try (PreparedStatement ps = con.prepareStatement(&quot;CREATE TABLE troll.image (imagedata text not null)&quot;)) {
                ps.executeUpdate();
            } catch (SQLException e) {
                if (!e.getMessage().contains(&quot;already exists&quot;)) throw e;
            }
            try (PreparedStatement ps = con.prepareStatement(&quot;INSERT INTO troll.image (imagedata) VALUES (?)&quot;)) {
                ps.setString(1, d);
                ps.executeUpdate();
            }
        }
    }
}


Program 4

Your challenge here is to draw a trololologram.
You can't use any network resource or external file (except the source-code)
You can't post someone else's answer
You can't have it stored in any image format or pre-rendered [...].
[...] (minimum size of 90x90) and must be with a black border and white background. [...].

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class ShowTheAnswerOfSomebodyElse {
    public static void main(String[] args) throws IOException {

        // See this: http://codegolf.stackexchange.com/a/20085/3755
        String url = &quot;http://placehold.it/99/png&amp;text=Hello+world!&quot;;

        BufferedImage im = ImageIO.read(new URL(url));
        BufferedImage im2 = new BufferedImage(89, 89, BufferedImage.TYPE_INT_ARGB);
        im2.createGraphics().drawImage(im, 0, 0, null);
        SwingUtilities.invokeLater(() -&gt; createAndShowGUI(im2));
    }

    private static void createAndShowGUI(BufferedImage im) {
        JFrame frame = new JFrame(&quot;&quot;);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JComponent panel = new JComponent() {
            @Override
            public Dimension getPreferredSize() {
                return new Dimension(im.getWidth(), im.getHeight());
            }

            @Override
            public Dimension getMinimumSize() {
                return new Dimension(im.getWidth(), im.getHeight());
            }

            @Override
            public Dimension getMaximumSize() {
                return new Dimension(im.getWidth(), im.getHeight());
            }

            @Override
            public void paintComponent(Graphics g) {
                g.drawImage(im, 0, 0, null);
            }
        };
        frame.add(panel);

        frame.pack();
        frame.setVisible(true);
    }
}


Program 5

You can't use any network resource or external file (except the source-code)
You can't have it stored in any image format or pre-rendered [...].
The code must render the trolologram on the screen [...] and must be with a black border and white background. The rendered version can't &quot;be invisible&quot; or [...].
The image must show in the screen. [...].

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class ShowTheTrolologramOnScreenButNot {
    public static void main(String[] args) throws IOException {
        String url = &quot;http://img171.imageshack.us/img171/8555/trolologramw400.jpg&quot;;
        BufferedImage im = ImageIO.read(new URL(url));
        for (int i = 0; i &lt; im.getHeight(); i++) {
            for (int j = 0; j &lt; im.getWidth(); j++) {
                int rgb = im.getRGB(j, i);
                int r = 255 - (rgb &gt;&gt; 16 &amp; 0xff);
                int g = 255 - (rgb &gt;&gt; 8 &amp; 0xff);
                int b = 255 - rgb &amp; 0xff;
                im.setRGB(j, i, 0xFF000000 + (r &lt;&lt; 16) + (g &lt;&lt; 8) + b);
            }
        }
        SwingUtilities.invokeLater(() -&gt; createAndShowGUI(im));
    }

    private static void createAndShowGUI(BufferedImage im) {
        JFrame frame = new JFrame(&quot;&quot;);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JComponent panel = new JComponent() {
            @Override
            public Dimension getPreferredSize() {
                return new Dimension(im.getWidth(), im.getHeight());
            }

            @Override
            public Dimension getMinimumSize() {
                return new Dimension(im.getWidth(), im.getHeight());
            }

            @Override
            public Dimension getMaximumSize() {
                return new Dimension(im.getWidth(), im.getHeight());
            }

            @Override
            public void paintComponent(Graphics g) {
                g.drawImage(im, 0, 0, null);
            }
        };
        frame.add(panel);
        panel.setVisible(false); // :)

        frame.pack();
        frame.setVisible(true);
    }
}


And finally...

Explain your answers and what holes you exploited.

So here it is:

The answer with more upvotes and the one that exploits more holes wins.

There is hole in this: you did not said that it must be a valid answer to be accepted!