}
*/
+function ellipsis($str, $maxlen) {
+ if (strlen($str) > $maxlen) {
+ $characters = floor($maxlen / 2);
+ return substr($str, 0, $characters) . '...' . substr($str, -1 * $characters);
+ }
+ return $str;
+}
+
/**
* Class for image manipulation
* Ideas: imagerotate, chunk_split(base64_encode())
*/
function __construct($imageref = null) {
//OC_Log::write('core','OC_Image::__construct, start', OC_Log::DEBUG);
- if(!function_exists('imagecreatefromjpeg')) { // FIXME: Find a better way to check for GD
+ if(!extension_loaded('gd') || !function_exists('gd_info')) {
+ //if(!function_exists('imagecreatefromjpeg')) {
OC_Log::write('core','OC_Image::__construct, GD module not installed', OC_Log::ERROR);
return false;
}
* @brief Saves the image.
* @returns bool
*/
+
public function save($filepath=null) {
if($filepath === null && $this->filepath === null) {
OC_Log::write('core','OC_Image::save. save() called with no path.', OC_Log::ERROR);
if($really === false) {
$filepath = null; // Just being cautious ;-)
} else {
- // TODO: Check for writability etc.
- if(!is_writable($filepath)) {
- OC_Log::write('core','OC_Image::save. \''.$filepath.'\' is not writable.', OC_Log::ERROR);
+ if(!is_writable(dirname($filepath))) {
+ OC_Log::write('core','OC_Image::save. Directory \''.dirname($filepath).'\' is not writable.', OC_Log::ERROR);
+ return false;
+ } elseif(is_writable(dirname($filepath)) && !is_writable($filepath)) {
+ OC_Log::write('core','OC_Image::save. File \''.$filepath.'\' is not writable.', OC_Log::ERROR);
return false;
}
}
*/
public function loadFromFile($imagepath=false) {
if(!is_file($imagepath) || !file_exists($imagepath) || !is_readable($imagepath)) {
- OC_Log::write('core','OC_Image::loadFromFile, couldn\'t load', OC_Log::DEBUG);
+ // Debug output disabled because this method is tried before loadFromBase64?
+ OC_Log::write('core','OC_Image::loadFromFile, couldn\'t load: '.ellipsis($imagepath, 50), OC_Log::DEBUG);
return false;
}
$itype = exif_imagetype($imagepath);
- switch($itype) { // TODO: Log if image type is not supported.
+ switch($itype) {
case IMAGETYPE_GIF:
if (imagetypes() & IMG_GIF) {
self::$resource = imagecreatefromgif($imagepath);
+ } else {
+ OC_Log::write('core','OC_Image::loadFromFile, GIF images not supported: '.$imagepath, OC_Log::DEBUG);
}
break;
case IMAGETYPE_JPEG:
if (imagetypes() & IMG_JPG) {
self::$resource = imagecreatefromjpeg($imagepath);
+ } else {
+ OC_Log::write('core','OC_Image::loadFromFile, JPG images not supported: '.$imagepath, OC_Log::DEBUG);
}
break;
case IMAGETYPE_PNG:
if (imagetypes() & IMG_PNG) {
self::$resource = imagecreatefrompng($imagepath);
+ } else {
+ OC_Log::write('core','OC_Image::loadFromFile, PNG images not supported: '.$imagepath, OC_Log::DEBUG);
}
break;
case IMAGETYPE_XBM:
if (imagetypes() & IMG_XPM) {
self::$resource = imagecreatefromxbm($imagepath);
+ } else {
+ OC_Log::write('core','OC_Image::loadFromFile, XBM/XPM images not supported: '.$imagepath, OC_Log::DEBUG);
}
break;
case IMAGETYPE_WBMP:
case IMAGETYPE_BMP:
if (imagetypes() & IMG_WBMP) {
self::$resource = imagecreatefromwbmp($imagepath);
+ } else {
+ OC_Log::write('core','OC_Image::loadFromFile, (W)BMP images not supported: '.$imagepath, OC_Log::DEBUG);
}
break;
/*