Загрузите измененное изображение с новыми размерами и высотой

#javascript #html #css #resize

#javascript #HTML #css #изменение размера

Вопрос:

По сути, я пытаюсь изменить размер изображения и загрузить его с новой шириной и высотой, но он загружает только исходную версию:

 jQuery(document).ready(function() {

    jQuery(function () {
            jQuery(":file").change(function () {
                if (this.files amp;amp; this.files[0]) {
                    var reader = new FileReader();
                    reader.onload = imageIsLoaded;
                    reader.readAsDataURL(this.files[0]);

                    orginalWidth = $("#image").width();
                    orginalheight = $("#image").height();
                    // alert(orginalheight);
                    var images = jQuery('.thumb-wrapper img'); //caches the query when dom is ready
                    // var CELL_WIDTH = 150;
                    var ASPECT = 1.5;

                    jQuery( "#slider" ).slider({
                        step: 5,
                        min: 70,
                        max: 200,
                        value: 100,
                        slide: function(event, ui) {
                            var size = (orginalWidth * ui.value /10)   "px";
                            // alert(size);
                            images.stop(true).animate({width: size, height: size / ASPECT}, 250);
                        }
                    });
                }
            });
        });

        function imageIsLoaded(e) {
            jQuery("#download").removeAttr("style");
            jQuery("#file").css("display", "none");
            jQuery('#image').attr('src', e.target.result);
            jQuery('#download').attr('href', e.target.result);
        };

});
  

HTML :

 <div id="slider"></div>

<div class="file-list">
 <div class="file-cell">
    <div class="thumb-wrapper">
        <input id="file" type='file' style=""/>
        <img id="image" src="#" alt="your image" />
        <a id="download" href="#" download="filename.jpg" style="display:none;">Download</a>
    </div>
  </div>
</div>
  

И вот демонстрация Jsfiddle

Любое решение для этого? Очень признателен!

Комментарии:

1. Я сделал это для загрузки, но не для загрузки. Я могу ошибаться, но первое, что я бы сделал для достижения этой цели, — это выполнить повторную выборку файла на сервере, а затем ajax получит повторную выборку.

Ответ №1:

То, что вы делаете прямо сейчас, заставляет браузер изменять размер изображения в окне просмотра, не изменяя исходное изображение. Что вам нужно сделать, так это создать скрипт для изменения размера изображения на стороне сервера. Вы используете jQuery для отправки изображения на сервер и получения измененного изображения обратно.

Комментарии:

1. Это правильно, просто подумал, что я бы добавил название библиотеки для PHP (GD) и ссылку на ее документы. Я полностью согласен с вашим ответом 1 php.net//manual/en/book.image.php

2. Он не упомянул, какой язык программирования он мог бы использовать, поэтому я оставил этот вопрос открытым. Если он действительно использует PHP, хорошей альтернативой GD может быть ImageMagick.

3. Это правда, и это довольно хорошее предположение, учитывая, что большинство веб-сайтов работают на PHP. Я только читал об ImageMagick и слышал хорошие вещи.

4. Существует ли скрипт, который может изменять размер изображения в зависимости от ширины атрибута img?

5. Я думаю, вам нужно будет самостоятельно создать серверный скрипт. Я не уверен, есть ли готовые сценарии для этой задачи, поскольку она довольно маленькая. Вы можете использовать jQuery для отправки изображения на сервер вместе с требуемой шириной, а затем с помощью Imagick вы можете изменить его размер. Небольшой пример (на PHP): $image = new Imagick('example_in.png'); $image->thumbnailImage(300, 0); $image->writeImage('example_out.png'); . Это придало бы изображению ширину 300 пикселей.