2

現時点では、CodeIgniter ができることを学び、試しています。しかし、一度に複数のサムネイルを作成することに固執しました。おそらく、Wordpress を使用して頭を混乱させすぎて、Codeigniter でこのようなことをしようとしましたが、とにかく、ここに私のコードがあります

<?php

class Gallery_model extends CI_Model {

var $gallery_path;

function __construct() {
    parent::__construct();
    $this->load->helper('functions');
    $this->gallery_path = realpath(APPPATH . '../uploads');
}

function do_upload() {

    $config = array(
        'allowed_types' => 'jpg|jpeg|gif|png',
        'upload_path' => $this->gallery_path,
        'max_size' => 2000
    );

    $this->load->library('upload', $config);
    $this->upload->do_upload();
    $image_data = $this->upload->data();


    $image_sizes = array(
        'thumb' => array(150, 100),
        'medium' => array(300, 300),
        'large' => array(800, 600)
    );

    foreach ($image_sizes as $resize) {

        $config = array(
            'source_image' => $image_data['full_path'],
            'new_image' => $this->gallery_path . '-' . $resize[0] . 'x' . $resize[1],
            'maintain_ration' => true,
            'width' => $resize[0],
            'height' => $resize[1]
        );

        $this->load->library('image_lib', $config);
        $this->image_lib->resize();
    }
}
}

現時点では、画像自体は作成できますが、これでサムネイルを作成することはできません。たぶん、誰かがコードを強化して、それを機能させることができます:)

PS - $image_sizes の後にすべてを取得し、それを他の独立した php ファイルに入れて実行し、foreach 内の $config を var ダンプしようとしましたが、動作しているように見えました。

4

2 に答える 2

13

次のように使用します。

$this->load->library('image_lib');
foreach ($image_sizes as $resize) {

    $config = array(
        'source_image' => $image_data['full_path'],
        'new_image' => $this->gallery_path . '-' . $resize[0] . 'x' . $resize[1],
        'maintain_ration' => true,
        'width' => $resize[0],
        'height' => $resize[1]
    );

    $this->image_lib->initialize($config);
    $this->image_lib->resize();
    $this->image_lib->clear();
}

initializeを使用してライブラリをロードするよりもうまく機能します$config

于 2012-07-22T19:11:41.087 に答える