Elliott C. Back: Internet & Technology

Iran’s Photoshopped Missiles

Posted in Airplane, Photo, Photoshop by Elliott Back on July 10th, 2008.

This is hilarious; Iran has apparently photoshopped an extra missile into the photograph they released to the press about their recent missile test:

As news spread across the world of Iran’s provocative missile tests, so did an image of four missiles heading skyward in unison. Unfortunately, it appeared to contain one too many missiles, a point that had not emerged before the photo was used on the front pages of The Los Angeles Times, The Financial Times, The Chicago Tribune and several other newspapers as well as on BBC News, MSNBC, Yahoo! News, NYTimes.com and many other major news Web sites.

photoshop-01.jpg

This is the image that ran in the papers and has recently been retracted for being “apparently digitally altered” by Iranian state media. Agence France-Presse said the fourth missile “has apparently been added in digital retouch to cover a grounded missile that may have failed during the test.” Here I’ve blown up a portion of the smoke so you can clearly see the ’shop:

photoshop-02.jpg

Camilla d’Errico’s Waterfall of Dreams

Posted in Art by Elliott Back on July 7th, 2008.

waterfall-of-dreams.jpg

What: Waterfall of Dreams, Solo Show
Where: Copro Nason Gallery, Santa Monica, USA
Host: Copro Nason Gallery
When: 2008-07-12

Let your imagination go into freefall, as your emotions are caressed, teased, and astounded by this collection of 20 original and breathtaking pieces. Camilla d’Errico presents her first Solo Show, taking place at Copro Nason Gallery, Santa Monica. Opening Reception July 12th from 8:00 pm to 11:30 pm.

Using the ImageShack XML API

Posted in Code, Graphics by Elliott Back on June 1st, 2008.

If you wanted to start a free photo uploading site, but didn’t want to pay the fixed storage and bandwidth costs of Amazon’s S3 or another CDN service, you might be interested in the free ImageShack API. Currently, it allows you to upload a photo to the ImageShack service, and get back the image’s size, a photo URL, and a thumbnail URL. You can access their API by using a simple ImageShack php class:

<?php
class ImageShack
{
    var $is_url = "http://www.imageshack.us/index.php";
    var $is_result = false;
    var $is_result_parsed = false;

    public function upload( $file )
    {
        // send the image to ImageShack
        $ch = curl_init($this->is_url);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_TIMEOUT, 240);
        curl_setopt($ch, CURLOPT_POSTFIELDS, array( ‘xml’=>‘yes’, ‘fileupload’=>‘@’.$file ));
        curl_setopt($ch, CURLOPT_HTTPHEADER, array( ‘Expect: ’ ));
        $this->is_result = curl_exec($ch);
        curl_close($ch);

        // Parse the result
        $this->parse();
    }

    public function get_image_url()
    {
        return $this->get( "image_link" );
    }

    public function get_thumb_url()
    {
        return $this->get( "thumb_link" );
    }

    public function get_done_page()
    {
        return $this->get( "done_page" );
    }

    public function get_resolution()
    {
        return $this->get( "resolution" );
    }

    public function get_size()
    {
        return $this->get( "filesize" );
    }

    private function get( $key )
    {
        if( !$this->is_result_parsed )
            return false;

        return( $this->is_result_parsed[ $key ] );
    }

    private function parse()
    {
        if (strpos($this->is_result, '<'.'?xml version=”1.0″ encoding="iso-8859-1″?>') === false)
            $this->is_result_parsed = false;

        $xmlData = explode("\n",$this->is_result);
        $xmlr = array();

        foreach($xmlData as $xmlDatum){
            $xmlDatum = trim($xmlDatum);

            if($xmlDatum != "" && !eregi("links",$xmlDatum) && !eregi("xml",$xmlDatum)){
                $xmlDatum = str_replace(">","<",$xmlDatum);
                list($xmlNull,$xmlName,$xmlValue) = explode("<",$xmlDatum);
                $xmlr[$xmlName] = $xmlValue;
            }
        }

        $this->is_result_parsed = $xmlr;
    }
}
?>

Accepting file uploads in PHP is almost trivial. You just need a form on a web page somewhere with multipart encoding, such as:

<form enctype="multipart/form-data" id="uploadform" method="post" action="http://example.com/path/to/upload">
<input type="hidden" name="MAX_FILE_SIZE" value="1048576">
<input id="anchor_file" type="file" name="files[]" />
<input type="submit" value="" id="submitimages" name="submitimages" />
</form>

On the server side, you need to iterate through the special $_FILES array in PHP:

<?php
for($i = 1; $i < count($_FILES['files']['name']); $i++){
    $error = $_FILES['files']['error'][$i];
    if($error !== 0) break;

    $data = array(
        'name' => $_FILES['files']['name'][$i],
        'temp' => $_FILES['files']['tmp_name'][$i],
        'size' => $_FILES['files']['size'][$i]
    );

    // do something with $data now, like upload it to ImageShack
}
?>

With these bits, it’s easy to write a wraparound interface to ImageShack. In the future, I hope their API also includes being able to query for photos, comments, and ratings after uploading; at the moment I see now way to do that.

« Previous PageNext Page »