Funktion der tager kopi af billedfil remote
HejJeg har lige siddet og arbejdet lidt på at lave en funktion som undersøger en url og hvis det er et img, så tager den en kopi af billedet og gemmer på min server.
Der skal ske følgende:
1. undersøg om det er en billedfil
2. hvis det er en billedfil:
2A. så tag en kopi
gem den på min server i et bestemt dir med et bestemt navn
fortæl i return om det lykkedes
hvis billedets x og y er forskellige, så vil jeg også gerne have resized billedet, men på en måde så den bevarer biledet og udfylder med hvid
Findes der en færdig funktion et sted som kan det hele? Ellers hvordan kan det så laves mest enkelt?
Jeg har arbejdet lidt med følgende, men jeg synes det er lidt for bøvlet. Håber det kan gøres meget enklere.
På forhånd tak
<?php
function makeRemoteThumbnail($o_file, $t_ht = 100, $new_filename, $new_filedir, $ratio_settings) {
if (checkRemoteFile($o_file)){
$image_info = getImageSize($o_file) ; // see EXIF for faster way
switch ($image_info['mime']) {
case 'image/gif':
if (imagetypes() & IMG_GIF) { // not the same as IMAGETYPE
$o_im = imageCreateFromGIF($o_file) ;
} else {
$ermsg = 'GIF not supported';
}
break;
case 'image/jpeg':
if (imagetypes() & IMG_JPG) {
$o_im = imageCreateFromJPEG($o_file) ;
} else {
$ermsg = 'JPEG not supported';
}
break;
case 'image/png':
if (imagetypes() & IMG_PNG) {
$o_im = imageCreateFromPNG($o_file) ;
} else {
$ermsg = 'PNG not supported';
}
break;
case 'image/wbmp':
if (imagetypes() & IMG_WBMP) {
$o_im = imageCreateFromWBMP($o_file) ;
} else {
$ermsg = 'WBMP not supported';
}
break;
default:
$ermsg = $image_info['mime'].' not supported';
break;
} else {
$ermsg = 'No image file found';
}
}
if (!isset($ermsg)) {
$o_wd = imagesx($o_im) ;
$o_ht = imagesy($o_im) ;
// thumbnail width = target * original width / original height
$t_wd = round($o_wd * $t_ht / $o_ht) ;
$t_im = imageCreateTrueColor($t_wd,$t_ht);
imageCopyResampled($t_im, $o_im, 0, 0, 0, 0, $t_wd, $t_ht, $o_wd, $o_ht);
imageJPEG($t_im);
imageDestroy($o_im);
imageDestroy($t_im);
$ermsg = 'OK';
}
return $ermsg;
}
?>