2017-06-10 3 views
1

Mon site Django est hébergé sur Azure.Comment redimensionner une image en Python sans utiliser Oreiller

Permet aux utilisateurs de télécharger des photos. J'ai besoin d'un moyen de redimensionner le système, et éventuellement faire pivoter les photos.

Cela semble simple, et j'ai essayé d'utiliser la bibliothèque Pillow, mais pendant qu'il fonctionne localement, il ne sera pas déployé sur Azure pour un certain nombre de raisons. Je peux être précis si nécessaire mais cela est bien documenté like here.

J'ai même essayé de construire une roue d'oreiller et de la déployer mais Azure refuse de la charger en disant que c'est la mauvaise plate-forme (même si je correspondais à la version Python 2.7 - et 32 bits). J'ai également essayé de télécharger des versions 64 bits, et rien ne fonctionne. Donc, à ce stade, je veux juste laisser Pillow derrière moi et demander un autre moyen d'y parvenir en Python sans oreiller. Y a-t-un autre moyen de faire ça?

notes de choses que j'essayé:

1) Installation Pillow de façon normale donne ce familier message d'erreur:
ValueError: zlib is required unless explicitly disabled using --disable-zlib, aborting

2) J'ai ensuite créé une roue en faisant: pip wheel Pillow --wheel-dir=requirements

Cette Toutefois, l'erreur suivante se produit dans le fichier pip.log:
Pillow-3.4.2-cp27-cp27m-win32.whl is not a supported wheel on this platform. Pillow-4.1.1-cp27-cp27m-win32.whl is not a supported wheel on this platform.
Je suis certain que je cours Python 2.7 sur un plateau de 32 bits Orm alors je ne sais pas pourquoi il se plaint.

+0

Est-ce que https://docs.scipy.org/doc/scipy-0.18.1/reference/generated/scipy.misc.imresize.html le ferait? –

Répondre

2

Après des jours gaspillés, je l'ai découvert la raison pour laquelle oreiller n'installe pas. Ce n'est pas parce que la roue est incompatible avec la plate-forme, mais plutôt que le pip est trop vieux.

Azure utilise pour le moment la version 1.5.6 - honte à eux. Cette version ne reconnaît pas les roues.

Voici comment je fixe ceci: Aller à la Kudu DebugConsole:
https://[site_name].scm.azurewebsites.net/DebugConsole

Activez votre virtualenv:
env\Scripts\activate

Notez que si vous exécutez pip --version quel âge que le numéro de version est. Mettre à jour maintenant en exécutant:
python -m pip install -U pip
Notez que vous ne pouvez pas mettre à niveau le pip par défaut dans D: \ Python27 que vous n'avez pas accès, mais vous pouvez mettre à jour votre pip locale à l'intérieur fo l'environnement virtuel. Exécutez maintenant pip --version pour vous assurer que vous exécutez la dernière version (c'est-à-dire> = 9.0.1).

Maintenant à l'intérieur des exigences.txt vous pouvez dire pip pour rechercher des roues dans des dossiers spécifiques en ajoutant une ligne en haut comme:
--find-links requirements (ce qui signifie qu'il va chercher dans le dossier des exigences).
Voici comment vous créez la roue d'oreiller. Vous pouvez l'exécuter localement ou sur la console Kudu. Si vous l'exécutez localement, assurez-vous que votre version python correspond à ce que vous utilisez sur Azure (2.7 ou 3.X) et, par défaut, assurez-vous d'utiliser une version 32 bits.
pip install wheel (seulement si vous n'avez pas installé la roue)
pip wheel Pillow --wheel-dir=requirements
Cette copie deux fichiers dans votre dossier Exigences: Oreiller-X.whl et olefile-X.whl. Assurez-vous qu'ils sont ajoutés à votre contrôle source si vous le déployez via git push. Poussez-les sur le serveur.

maintenant dans le Kudu DebugConsole vous pouvez tester les fichiers .whl sont là (après le déploiement) et tester l'installation en exécutant: pip install --no-index -r requirements.txt
Cela devrait maintenant fonctionner et installer oreiller!

Lors du déploiement, portez une attention particulière à la mention Found compatible virtual environment. ou Creating python 2-7 virtual environment.. Le premier est ce que tu veux. Mais si vous voyez ce dernier, cela signifie que le déploiement a dynamité votre dossier env et vous réinitialiser à pip 1.5.6. Je ne sais pas pourquoi cela arrive parfois, mais essayez de faire le moins de changements possibles dans le dossier env après le déploiement (c'est-à-dire, mettez à niveau pip et c'est tout) pour éviter cela.

0

Je ne peux pas vous aider beaucoup en installant Pillow sur la plate-forme Azure. Mais mes jours d'utilisation de redimensionnement manuel et d'autres choses est parti depuis longtemps. J'ai utilisé thumbor https://thumbor.org/ depuis un certain temps.

Juste installer une instance sécurisée de la même chose et l'utiliser redimensionner, recadrer et gérer vos images de façon dynamique.

Hope it helps

+0

Thumbor [nécessite oreiller] (https://github.com/thumbor/thumbor/blob/7907bd6fa6df55ccd7da724ece674fd996b13626/setup.py#L100), ce qui n'aidera pas dans le cas de l'OP. – knbk

0

Il existe l'autre thread SO Microsoft Azure Django Python setup error Pillow, qui présente un problème similaire à propos de l'installation de Pillow sur Azure. Je pense que ma réponse à cette question est utile pour résoudre votre problème. Toute préoccupation pour ma solution, n'hésitez pas à me le faire savoir.