open($comic); if ( !$opened ) { return false; } $lowest = "~"; $imgdata = null; for ( $i=0; $i<$zip->numFiles; $i++ ) { $imgname = basename($zip->getNameIndex($i)); $parts = pathinfo($imgname); if ( isset($parts['extension']) ) { $imgext = strtolower($parts['extension']); if ( (strcmp($lowest, $imgname) > 0) && ((strcasecmp($imgext, "jpg") == 0) || (strcasecmp($imgext, "png") == 0) || (strcasecmp($imgext, "webp") == 0)) ) { $lowest = $imgname; $imgdata = $zip->getFromIndex($i); } } } $zip->close(); if ( is_null($imgdata) ) return false; $didwrite = file_put_contents($outfile, $imgdata); if ( !$didwrite ) return false; } elseif ( substr($comic, -3) == "cbr" ) { $rar_file = rar_open($comic); if ( $rar_file === false ) { return false; } $entries = rar_list($rar_file); $lowest = "~"; foreach ( $entries as $entry ) { $imgname = $entry->getName(); $parts = pathinfo($imgname); if ( isset($parts['extension']) ) { $imgext = strtolower($parts['extension']); if ( (strcmp($lowest, $imgname) > 0) && ((strcasecmp($imgext, "jpg") == 0) || (strcasecmp($imgext, "png") == 0) || (strcasecmp($imgext, "webp") == 0)) ) { $lowest = $imgname; $didwrite = $entry->extract(false, $outfile); if ( !$didwrite ) { return false; } } } } rar_close($rar_file); } else { return false; } $input = new Imagick($outfile); $input->setImageFormat("jpg"); $width = $input->getImageWidth(); $height = $input->getImageHeight(); $scale = 200 / $width; $newx = 200; $newy = intval($height * $scale); if ( $newy > 300 ) { $newy = 300; $scale = $height / 300; $newx = intval($width / $scale); } $thumb = substr($outfile, 0, -4) . ".jpg"; $thumb = str_replace("#", "", $thumb); $input->resizeImage($newx, $newy, Imagick::FILTER_SINC, 1); $written = file_put_contents($thumb, $input->getImageBlob()); unlink($outfile); return (($written === false) ? false : true); } // vim: set ai et ts=3 sw=3: