Det är väl snarare att ladda “över” när det inte ska upp från mig…

Alternativet allow_url_fopen tillåter programmeraren att öppna och inkludera filer som finns på en annan server än den som det aktuella scriptet körs ifrån med t.ex. funktionen fopen(). Då detta kan innebära en säkerhetsrisk har vi valt att av-aktivera funktionen.
Loopia

Ja, alltså det är jättefint och säkert. Men jag då som är så himla noobig? Hur ska jag kunna göra då, jag som inte kan cURL?

Jag fick koden för länge sedan av en snäll individ och skulle bara lägga in den, men gjorde jag det? Nej då… *skämskudde* Jag tappade bort den istället. *skäms lite till*

Testade ju självklart att "sno" en bild från Lwani.se till Storybook-historien om Lwani.

Så nu har jag googlat och hittade kod på den här trevliga sidan.

Det var ju bara det där om att fopen inte var på… så jag googlade lite till. Här hittade vi lite kodsnuttar.

Bara att kasta ihop! Så nu har jag en fil som ser ut som nedan. Lång kod, jag vet… och jag bara tror att det funkar. Det som skulle kunna strula är att oavsett vad man tankar upp vill jag spara en png, och jag är inte säker på att jag konverterat rätt.

Ska testa lite mera. Jag har kastat in det på Storybook.se, så du kan testa hej vilt du med! 🙂

Här kommer all kod för alla er som blir alldeles till er av nyfikenhet (det är inte bara mitt fel att det är grymt dåligt kommenterat, det var så när jag kom! ;)):

class.get.image.php
<?php
/*
-------------------------------------------------------------------------
Credits: Bit Repository
URL: http://www.bitrepository.com/download-image.html
-------------------------------------------------------------------------
*/
class GetImage {

var $source;
var $save_to; //mapp att spara i
var $dest_name; //namn på filen efter undansparad
var $set_extension;
var $quality;

function download($method = ‘curl’) // default method: cURL
{
# the request
$ch = curl_init($this->source);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);

$mime = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
//$mime = $info[‘mime’];

if(!$mime) exit(“Could not obtain mime-type information (“.$mime.”). Make sure that the remote file is actually a valid image. (“.$this->source.”)”);

// What sort of image?
$type = substr(strrchr($mime, ‘/’), 1);

switch ($type)
{
case ‘jpeg’:
$image_create_func = ‘ImageCreateFromJPEG’;
$image_save_func = ‘ImageJPEG’;
$new_image_ext = ‘jpg’;

// Best Quality: 100
$quality = isSet($this->quality) ? $this->quality : 100;
break;

case ‘png’:
$image_create_func = ‘ImageCreateFromPNG’;
$image_save_func = ‘ImagePNG’;
$new_image_ext = ‘png’;

// Compression Level: from 0  (no compression) to 9
$quality = isSet($this->quality) ? $this->quality : 0;
break;

case ‘bmp’:
$image_create_func = ‘ImageCreateFromBMP’;
$image_save_func = ‘ImageBMP’;
$new_image_ext = ‘bmp’;
break;

case ‘gif’:
$image_create_func = ‘ImageCreateFromGIF’;
$image_save_func = ‘ImageGIF’;
$new_image_ext = ‘gif’;
break;

case ‘vnd.wap.wbmp’:
$image_create_func = ‘ImageCreateFromWBMP’;
$image_save_func = ‘ImageWBMP’;
$new_image_ext = ‘bmp’;
break;

case ‘xbm’:
$image_create_func = ‘ImageCreateFromXBM’;
$image_save_func = ‘ImageXBM’;
$new_image_ext = ‘xbm’;
break;

default:
$image_create_func = ‘ImageCreateFromJPEG’;
$image_save_func = ‘ImageJPEG’;
$new_image_ext = ‘jpg’;
}

if(isSet($this->dest_name))
{
$new_name = $this->dest_name;
}
else if(isSet($this->set_extension))
{
$ext = strrchr($this->source, “.”);
$strlen = strlen($ext);
$new_name = basename(substr($this->source, 0, -$strlen)).’.’.$new_image_ext;
}
else
{
$new_name = basename($this->source);
}

$save_to = $this->save_to.$new_name;

if($method == ‘curl’)
{
$save_image = $this->LoadImageCURL($save_to);
}
elseif($method == ‘gd’)
{
$img = $image_create_func($this->source);

if(isSet($quality))
{
$save_image = $image_save_func($img, $save_to, $quality);
}
else
{
$save_image = $image_save_func($img, $save_to);
}
}

return $save_image;
}

function LoadImageCURL($save_to)
{
$ch = curl_init($this->source);
$fp = fopen($save_to, “wb”);

// set URL and other appropriate options
$options = array(CURLOPT_FILE => $fp,
CURLOPT_HEADER => 0,
CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_TIMEOUT => 60); // 1 minute timeout (should be enough)

curl_setopt_array($ch, $options);

$save = curl_exec($ch);
curl_close($ch);
fclose($fp);

return $save;
}
}
?>

demo.php

<?php
include_once ‘class.get.image.php’;

// initialize the class
$image = new GetImage;

// just an image URL
$image->source = ‘http://static.vidde.org/viddeblogg/media/2011/08/20110727_viddedroemmer-480×287.jpg’;
$image->save_to = ‘images/’; // with trailing slash at the end
$image->dest_name = ‘bilden.png’; //filnamnet

$get = $image->download(‘curl’); // using GD

if($get)
{
echo ‘The image has been saved.’;
}
?>

Flattr this!