public function test() { echo "\ttesting class_image...\n"; $objImage = new class_image(); $objImage->setIntHeight(10); $objImage->setIntWidth(10); $objImage->createBlankImage(); $objColor = $objImage->registerColor(0, 0, 0); $objImage->drawFilledRectangle(0, 0, 10, 10, $objColor); if (!is_dir(_realpath_ . "/files/images/samples/")) { $objFS = new class_filesystem(); $objFS->folderCreate("/files/images/samples/", true); } $objImage->saveImage("/files/images/samples/testimage.JPG"); echo "\tloading an image from the samplecontent\n"; $strImage = "/files/images/samples/testimage.JPG"; //$strImage = "<img src=\""._webpath_."/portal/pics/upload/samples/IMG_3000.JPG\"/>"; echo "\timage: " . $strImage . "\n"; $objImage = new class_image(); $objImage->preLoadImage($strImage); //resize the image echo "\tresizing the image to 150 x 150\n"; $objImage->resizeImage(150, 150, 0, true); $objImage->saveImage("", true); $strResizeCacheName1 = $objImage->getCachename(); $this->assertNotEquals($strResizeCacheName1, "", __FILE__ . " getCachenameAfterResize"); echo "\tcachename: " . $strResizeCacheName1 . "\n"; echo "<img src=\"" . _webpath_ . _images_cachepath_ . $strResizeCacheName1 . "\"/>"; $this->assertFileExists(_realpath_ . _images_cachepath_ . $strResizeCacheName1, __FILE__ . " getCachenameAfterResize"); echo "\treplay test...\n"; echo "\timage: " . $strImage . "\n"; $objImage = new class_image(); $objImage->preLoadImage($strImage); //resize the image echo "\tresizing the image to 150 x 150\n"; $objImage->resizeImage(150, 150, 0, true); $objImage->saveImage("", true); $strResizeCacheName2 = $objImage->getCachename(); $this->assertEquals($strResizeCacheName2, $strResizeCacheName2, __FILE__ . " getCachenameAfterResize"); echo "\tcachename: " . $strResizeCacheName2 . "\n"; //echo "<img src=\""._webpath_._images_cachepath_.$strResizeCacheName2."\"/>"; $this->assertFileExists(_realpath_ . _images_cachepath_ . $strResizeCacheName2, __FILE__ . " getCachenameAfterResize"); echo "\tresize & text...\n"; echo "\timage: " . $strImage . "\n"; $objImage = new class_image("test1020"); $objImage->preLoadImage($strImage); //resize the image $objImage->resizeImage(150, 150, 0, true); $objImage->imageText("test", 10, 20); $objImage->saveImage("", true); $strResizeCacheName3 = $objImage->getCachename(); $this->assertTrue($strResizeCacheName3 != "", __FILE__ . " getCachenameAfterResize&Text"); echo "\tcachename: " . $strResizeCacheName3 . "\n"; echo "<img src=\"" . _webpath_ . _images_cachepath_ . $strResizeCacheName3 . "\"/>"; $this->assertFileExists(_realpath_ . _images_cachepath_ . $strResizeCacheName3, __FILE__ . " getCachenameAfterResize"); echo "\tresize & text...\n"; echo "\timage: " . $strImage . "\n"; $objImage = new class_image("test2030"); $objImage->preLoadImage($strImage); //resize the image $objImage->resizeImage(150, 150, 0, true); $objImage->imageText("test", 20, 30); $objImage->saveImage("", true); $strResizeCacheName4 = $objImage->getCachename(); $this->assertNotEquals($strResizeCacheName3, $strResizeCacheName4, __FILE__ . " getCachenameAfterResize&Text"); echo "\tcachename: " . $strResizeCacheName3 . "\n"; echo "<img src=\"" . _webpath_ . _images_cachepath_ . $strResizeCacheName4 . "\"/>"; $this->assertFileExists(_realpath_ . _images_cachepath_ . $strResizeCacheName4, __FILE__ . " getCachenameAfterResize"); echo "\ttest image overlay.\n"; $objImage = new class_image("overlay" . $strResizeCacheName4); $objImage->preLoadImage($strImage); $objImage->resizeAndCropImage(300, 300, 300, 300); $objImage->overlayImage(_images_cachepath_ . $strResizeCacheName4, 10, 10, true); $objImage->saveImage("", true); $strResizeCacheName5 = $objImage->getCachename(); echo "\tcachename: " . $strResizeCacheName5 . "\n"; echo "<img src=\"" . _webpath_ . _images_cachepath_ . $strResizeCacheName5 . "\"/>"; $this->assertFileExists(_realpath_ . _images_cachepath_ . $strResizeCacheName5, __FILE__ . " getCachenameAfterResize"); }
//2M jsonOutput(2, '请上传小余 2M 的图片 0032'); } $upload->save($file['tmp_name'], $file['target']); $errorcode = $upload->error(); if ($errorcode < 0) { $data = $upload->errormsg(); @unlink($file['target']); jsonOutput(2, $data); } //判断是否开启了exif,并获取照片的exif信息 $my_exif = array(); if (extension_loaded('exif') && extension_loaded('mbstring')) { $my_exif = exif_read_data($file['target'], "EXIF"); } $image = new class_image($file['target']); $image->exif = $my_exif; $status = $image->Thumb(); if ($status <= 0) { $data = $image->errormsg($status); @unlink($file['target']); jsonOutput(2, $data); } $insert = array('uid' => $_B['uid'], 'aid' => 0, 'path' => $file['imgurl'], 'type' => 'article', 'size' => $image->imginfo['size'], 'width' => $image->imginfo['width'], 'height' => $image->imginfo['height'], 'thumbH' => $image->imginfo['thumbH'], 'status' => 0, 'dateline' => TIMESTAMP); $aid = J::t('image')->insert($insert, true); if (!is_numeric($aid) || $aid <= 0) { @unlink($file['target']); jsonOutput(2, '上传失败 0071'); } $data['url'] = $_B['siteurl'] . $file['imgurl'] . '.thumb.jpg'; $data['aid'] = $aid;
/** * Places an image on top of another image * In case you want to overlay transparent images, use PNGs only * * @param string $strImage The image to place into the loaded image * @param int $intX * @param int $intY * @param bool $bitCache * * @return bool */ public function overlayImage($strImage, $intX = 0, $intY = 0, $bitCache = false) { $bitReturn = false; //register for using the caching $this->strCacheAdd .= $strImage; //Cache? if ($bitCache) { //create cachename $this->strCachename = $this->generateCachename(); if (is_file(_realpath_ . $this->strCachepath . $this->strCachename)) { $this->bitNeedToSave = false; return true; } } $this->bitNeedToSave = true; //load image if ($this->objImage == null && $this->bitPreload) { $this->finalLoadImage(); } //load the other image into the system using another instance $objOverlayImage = new class_image(); if ($objOverlayImage->loadImage($strImage)) { imagealphablending($this->objImage, true); //merge pics $objOverlayResource = $objOverlayImage->getImageResource(); imagealphablending($objOverlayResource, true); $bitReturn = imagecopy($this->objImage, $objOverlayResource, $intX, $intY, 0, 0, $objOverlayImage->getIntWidth(), $objOverlayImage->getIntHeight()); //$bitReturn = imagecopymerge($this->objImage, $objOverlayResource, $intX, $intY, 0, 0, $objOverlayImage->getIntWidth(), $objOverlayImage->getIntHeight(), 100); } return $bitReturn; }