때로는 이미지를 회전하거나 확대/축소해야 할 수도 있습니다. 이러한 경우 클라이언트 측 이미지 확대/축소 라이브러리를 사용하여 html 파일에 확대/축소 회전하는 jquery 기능을 추가합니다. html 파일에 jquery js와 css를 로드하기만 하면 됩니다.
Django 프로젝트와 앱을 만듭니다. URL 설정 INSTALLED_APPS에 앱 추가와 같은 몇 가지 기본적인 작업을 수행합니다.
django-client-side-image-cropping 설치 라이브러리
pip install django-client-side-image-cropping
이제 settings.py에서 다음 줄을 추가하십시오 -
INSTALLED_APPS+=['client_side_image_cropping']
여기에서는 모듈을 앱으로 추가하는 간단한 설정을 완료했습니다.
예시
models.py에서 , 다음 줄을 추가하십시오 -
from django.db import models # Create your models here. class Data(models.Model): image=models.ImageField(upload_to ='myimages/')
여기에서 이미지 필드가 있는 모델을 설정합니다.
settings.py.에서 미디어 루트를 설정합니다.
url.py에서 , 다음 줄을 추가하십시오 -
from django.urls import path from . import views from django.conf import settings from django.conf.urls.static import static urlpatterns = [ path('', views.home,name="home"), ] urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_RO OT)
여기에서는 기본적인 미디어 URL을 만들었습니다. 확실히 알고 있는 설정입니다.
이제 views.py에서 , 다음을 추가하십시오 -
from django.shortcuts import render from django import forms from .models import Data from client_side_image_cropping import ClientsideCroppingWidget # Create your views here. class DataForm(forms.ModelForm): class Meta: model=Data fields="__all__" widgets = { 'image': ClientsideCroppingWidget( width=400, height=600, preview_width=100, preview_height=150, ) } def home(request): if request.method =="POST": form=DataForm(request.POST,request.FILES) if form.is_valid(): form.save() form=DataForm() return render(request,'home.html',{"form":form})
여기서는 간단한 양식을 만들었습니다. 모델 양식이므로 이미지 필드에 자르기 위젯을 추가했습니다.
home.html에서 다음을 추가하십시오 -
{% load static %} {% load cropping %} {% load thumbnail %} <!DOCTYPE html> <html> <head> <title> TUT </title> <link rel="stylesheet" href="{% static "client_side_i mage_cropping/cropping.css" %}"></script> <link rel="stylesheet" href="{% static "client_side_i mage_cropping/cropping_widget.css" %}"></script> <script src="https://ajax.googleapis.com/ajax/libs/jq uery/1.12.4/jquery.min.js"></script> <script src="{% static "client_side_image_cropping/cr oppie.min.js" %}"></script> <script src="{% static "client_side_image_cropping/cr opping_widget.js" %}"></script> </head> <body> <h2>HI</h2> {% csrf_token %} <form method="post" enctype="multipart/formdata"> {% csrf_token %} {{ form.as_p }} <input type="submit" value="Save"/> </form> </body> </html>
프론트엔드에서 일부 jQuery와 일부 스타일을 로드하고 입력을 받을 양식을 렌더링합니다.
이제 모든 작업이 완료되었습니다. 출력을 확인해보자.
출력
사진을 회전하고 확대/축소할 수 있는 이와 같은 인터페이스를 얻게 됩니다. 그다지 보기 좋은 인터페이스는 아니지만 CSS를 사용하여 수정할 수 있습니다.
업로드된 이미지가 옮겨진 것처럼 보일 수 있으므로 회전을 사용하여 올바르게 설정하십시오. 그 변위는 브라우저 문제로 인해 발생할 수 있습니다.