문제

차트, 그래프 등과 같이 동적으로 만든 이미지를 사용자에게 보내고 싶습니다. 이러한 이미지는 "Throw-Away"이미지입니다. 한 사용자에게만 전송 된 다음 파괴되므로 "관련된 파일 없음"입니다.

이미지를 파일 시스템에 저장하지 않고 이미지를 사용자에게 직접 보내고 싶습니다. PHP를 사용하면 HTML 파일의 이미지를 다음과 같은 PHP 스크립트에 연결하여 달성 할 수 있습니다.

편집 : 내 이미지 태그를 삼킨다 :

<img src="someScript.php?param1=xyz">

그런 다음 스크립트는 올바른 헤더 (FileType => JPEG 등)를 브라우저에 보냈고 파일 시스템에 일시적으로 저장하지 않고 이미지를 클라이언트에 직접 작성했습니다.

WSGI 응용 프로그램으로 어떻게 이와 같은 일을 할 수 있습니까? 현재 Python의 내부 SimpleWSGI 서버를 사용하고 있습니다. 이 서버는 주로 멀티 스레딩 기능이 부족하기 때문에 주로 데모 목적을위한 것이 아니라 실제 사용을위한 것이 아니라는 것을 알고 있습니다. 그래서 이것을 지적하지 말고, 그것을 알고 있으며, 지금은 내 요구 사항을 충족합니다. )

URL을 이미지 태그에 넣고 WSGI로 요청 처리하는 것만 큼 간단합니까, 아니면 더 나은 연습이 있습니까?

누구든지 이것에 대한 경험이 있었고 몇 가지 포인터를 줄 수 있습니다 (32 비트 제발 제발)

감사,

도움이 되었습니까?

해결책

WSGI 또는 PHP 또는 기타 특정 웹 기술과 관련이 없습니다. 고려하다

<img src="someScript.php?param1=xyz">

일반적으로 URL의 경우 someScript.php?param1=xyz 서버는 이미지 유형의 데이터를 반환해야하며 작동합니다.

이 예를 고려하십시오 :

from wsgiref.simple_server import make_server

def serveImage(environ, start_response):
    status = '200 OK'
    headers = [('Content-type', 'image/png')]
    start_response(status, headers)

    return open("about.png", "rb").read()

httpd = make_server('', 8000, serveImage)
httpd.serve_forever()

여기서 Servimage를 가리키는 모든 URL은 유효한 이미지를 반환하고 귀하는이를 사용할 수 있습니다. img 이미지를 사용할 수있는 태그 또는 기타 태그 장소 (예 : CSS 또는 배경 이미지

이미지 데이터는 많은 타사 라이브러리를 사용하여 즉시 생성 될 수 있습니다. 예를 들어 PIL 등 예 : Python 이미징 라이브러리를 사용하여 동적으로 이미지 생성의 예를 참조하십시오.http://lost-theory.org/python/dynamicimg.html

다른 팁

네. 페이지에 URL을 넣는 것만 큼 간단합니다.

<img src="url_to_my_application">

그리고 응용 프로그램은 PHP 나 다른 것과 마찬가지로 올바른 모방 유형으로 반환해야합니다. 가능한 가장 간단한 예 :

def application(environ, start_response):
    data = open('test.jpg', 'rb').read() # simulate entire image on memory
    start_response('200 OK', [('content-type': 'image/jpeg'), 
                              ('content-length', str(len(data)))])
    return [data]

물론 프레임 워크/도우미 라이브러리를 사용하는 경우 도우미 기능이있어 쉽게 기능 할 수 있습니다.

웹 서버에서 멀티 스레딩 기능이 전형적인 것이 아니라는 부수적 인 의견으로 추가하고 싶습니다. 올바르게 완료되면 성능이 좋은 스레드가 필요하지 않습니다.

다른 요청간에 전환하는 잘 개발 된 이벤트 루프가 있고, 요청 처리 코드를 스레드가없는 친화적 인 방식으로 (가능한 한 자주 서버로 반환함으로써)를 작성하면 얻을 수 있습니다. 더 나은 스레드를 사용하는 것보다 성능은 더 빨리 실행되지 않고 오버 헤드를 추가하기 때문에 성능.

보다 꼬인 .web 스레드를 사용하지 않는 우수한 Python 웹 서버 구현.

이 기술을 사용하는 멋진 예는 참조하십시오.BNF 철도 다이어그램 Whiff Mini-Demo. Whiff WSGI 툴킷 다운로드에서 소스를 얻을 수 있습니다.

ETAG 헤더를 사용하고주의를 기울여야합니다. WSGI가 아닌 CGI 스크립트이지만 아이디어는 번역 할 수 있습니다. 스파크 라인 소스 - 동일한 매개 변수에 대해 항상 동일한 이미지를 반환하므로 극단적 인 캐싱을 수행합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top