0

私は現在、ユーザーが新しい画像を作成し、アップロードボタンと名前入力、画像のすべての基本的なギャラリーフィールドがあるコンポーネントを作成しています..

しかし、私は 2 つの問題に遭遇しました。

function save(){
    if(!defined('DS')) define('DS', DIRECTORY_SEPARATOR);
    $input=JFactory::getApplication()->input;
    $input->get('jform', NULL, NULL);

    $file = JRequest::getVar('jform', null, 'files', 'array');
    $data = JRequest::getVar( 'jform', null, 'post', 'array' );
    $path = JPATH_ROOT;

    //
    //

    // Make the file name safe.
    jimport('joomla.filesystem.file');
    $file['name']['logo'] = JFile::makeSafe($file['name']['logo']);

    // Move the uploaded file into a permanent location.
    if (isset($file['name']['logo'])) {
        // Make sure that the full file path is safe.
        $filepath = JPath::clean($path. DS ."images". DS ."associations". DS . strtolower($file['name']['logo']));
        // Move the uploaded file.
        JFile::upload( $file['tmp_name']['logo'], $filepath );
        $data['logo'] = strtolower( $file['name']['logo'] );
        //convert image
        $image = $filepath;

        $im = new Imagick();
        $im->pingImage($image);
        $im->readImage( $image );

        $im->setImageResolution(72,72);
        $im->resampleImage(72,72,imagick::FILTER_UNDEFINED,1);
        $im->scaleImage(160,0); 

        $im->setImageFormat('jpeg');
        $im->setImageCompression(imagick::COMPRESSION_JPEG);
        $im->setImageCompressionQuality(60);

        $im->modulateImage(100, 0, 100); 
        $im->writeImage($image);
        $im->destroy();
    }

    $input->post->set('jform',$data);

    return parent::save();
}

そして最後に、これをどのように管理しますか? 画像名をデータベースに保存しますが、このアイテムに戻ると、アップロードフィールドしかありません。画像名または実際の画像を削除機能を表示して再アップロードすると便利です...

私はこれについて正しい道を進んでいますか?...どんな助けでも大歓迎です...ありがとう:)

4

1 に答える 1

0

2枚の画像の作り方

アップロードしたオリジナルから 2 つのリソースを作成し、それぞれを変換して別のファイルに保存する必要があります。たとえば、JImageパッケージを使用しています(利用可能な limitcolors フィルターがないことに注意してください)

$image_one = new JImage($filepath);
$image_one
    ->filter('grayscale')
    ->toFile($path_one, IMAGETYPE_JPEG, array('quality' => 60));

$image_two = new JImage($filePath);
$image_two
    ->filter('limitcolors', array('limit' => 160))
    ->toFile($path_two, IMAGETYPE_GIF);

画像の管理

理由、機能が実装されている理由、およびアップロードされた画像と他のオブジェクト/イベントとの関係によって異なります。

アップロードされた画像がユーザー プロファイルに使用される場合は、ユーザー ID を画像の場所と共にデータベースに保存する必要があります。次回は、現在のユーザーが自分のアカウントとディスプレイに関連する画像を持っているかどうかを確認します。

于 2013-09-30T10:35:57.700 に答える