Ben toplu görüntülerin bir demet (~ 220) yeniden boyutlandırmak çalışıyorum. Ben alıyorum: (hep)
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 19520 bytes) in C:\xampp\htdocs\jason\inc\admin\image.resize.functions.php on line 31
Ben ne olursa olsun ben $n->resizeToHeight($c)
aramak kaç kez, aynı noktada HER ZAMAN hatası alıyorum. Ben ONE yeniden boyutlandırmak için denemek gibi sonra en kısa sürede kaza döngüsü yaklaşık 100 fotoğraf aracılığıyla olacaktır. Yoksa 100 fotoğraf yeniden boyutlandırmak ve 101 üzerinde kilitlenmesine. (300 fotoğraf boyutlandırmak neden) ben bile switch($k)
her durumda gidebilirsiniz, ve hala sınıfının 101 örneğinden sonra kilitlenmesine Image
.
Hata benim açıklama mantıklı mı? Ben "100" etrafında atma ediyorum, mutlaka 100 olmayabilir, (tam sayısını bilmiyorum) 75 veya 125 olabilir. Sadece sürekli aynı noktada çöker.
Dikkat edilmelidir: Ben XAMPP ile test ediyorum. Ben gerçek bir ortamda denedim değil (ben henüz can çünkü).
resize-images.php
(gerekeni)
foreach($imgs as $img){
$i = new Image($img['cid']);
foreach($go as $k=>$c){
if($i->$k > $c+IMGTOL || $i->$k < $c-IMGTOL) {
$n = new SimpleImage();
$n->load(ORIGABSLOC."/".$i->filename);
$n->resizeToHeight($c);
switch($k){
case "image_height":
$loc = IMGABSLOC;
break;
case "thumb_height":
$loc = THUMBABSLOC;
break;
case "mobile_height":
$loc = MOBILEABSLOC;
break;
}
$n->save($loc."/".$i->filename);
$n->destroy();
unset($n);
}
echo "<style>#$k-$count{background-color:blue;}</style>";
flush_();
}
$count++;
unset($i);
}
Ben <style>
echo ve flush_()
bu yüzden ben bir yükleme çubuğu etkisi olsun. Ben değil fışkırma ya da eğer önemli değil, hala aynı noktada çöker.
Image class
(gerekeni)
class Image{
function Image($id){
$img = selectImages(array('type'=>4,'id'=>$id));
if(sizeof($img) < 1) {
return NULL;
}
if(sizeof($img)>0){
foreach($img[0] as $k=>$c){
if(!is_numeric($k)) {
$this->$k = $c;
}
}
$this->type = $this->display_type;
$size = @getimagesize(IMGABSLOC."/".$this->filename);
$this->height = $size[1];
$this->width = $size[0];
$this->image_height = $size[1];
$this->image_width = $size[0];
$size = @getimagesize(ORIGABSIMGLOC."/".$this->filename);
$this->original_height = $size[1];
$this->original_width = $size[0];
$size = @getimagesize(THUMBABSLOC."/".$this->filename);
$this->thumb_height = $size[1];
$this->thumb_width = $size[0];
$size = @getimagesize(MOBILEABSLOC."/".$this->filename);
$this->mobile_height = $size[1];
$this->mobile_width = $size[0];
$this->anchor = $this->album;
}
else return false;
}
SimpleImage Class
(gerekeni)
class SimpleImage {
var $image;
var $image_type;
function load($filename) {
$image_info = getimagesize($filename);
$this->image_type = $image_info[2];
if( $this->image_type == IMAGETYPE_JPEG ) {
$this->image = imagecreatefromjpeg($filename);
} elseif( $this->image_type == IMAGETYPE_GIF ) {
$this->image = imagecreatefromgif($filename);
} elseif( $this->image_type == IMAGETYPE_PNG ) {
$this->image = imagecreatefrompng($filename);
}
}
function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {
if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image,$filename,$compression);
} elseif( $image_type == IMAGETYPE_GIF ) {
imagegif($this->image,$filename);
} elseif( $image_type == IMAGETYPE_PNG ) {
imagepng($this->image,$filename);
}
if( $permissions != null) {
chmod($filename,$permissions);
}
}
function output($image_type=IMAGETYPE_JPEG) {
if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image);
} elseif( $image_type == IMAGETYPE_GIF ) {
imagegif($this->image);
} elseif( $image_type == IMAGETYPE_PNG ) {
imagepng($this->image);
}
}
function resizeToHeight($height) {
$ratio = $height / $this->getHeight();
$width = $this->getWidth() * $ratio;
$this->resize($width,$height);
}
function resize($width,$height) {
$new_image = imagecreatetruecolor($width, $height);
imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
imagedestroy($this->image);
$this->image = $new_image;
}
function destroy(){
imagedestroy($this->image);
}
}