2019-12-18T14:19:08 Created temporary directory: /tmp/pip-ephem-wheel-cache-uk8v9frn 2019-12-18T14:19:08 Created temporary directory: /tmp/pip-req-tracker-xfml96nr 2019-12-18T14:19:08 Created requirements tracker '/tmp/pip-req-tracker-xfml96nr' 2019-12-18T14:19:08 Created temporary directory: /tmp/pip-wheel-hbgw98v9 2019-12-18T14:19:08 Collecting google-cloud-storage-image-resizer==0.0.27 2019-12-18T14:19:08 1 location(s) to search for versions of google-cloud-storage-image-resizer: 2019-12-18T14:19:08 * https://pypi.org/simple/google-cloud-storage-image-resizer/ 2019-12-18T14:19:08 Getting page https://pypi.org/simple/google-cloud-storage-image-resizer/ 2019-12-18T14:19:08 Analyzing links from page https://pypi.org/simple/google-cloud-storage-image-resizer/ 2019-12-18T14:19:08 Found link https://files.pythonhosted.org/packages/b5/4b/f80250435f43ab8ceca471b45de2c4e25af411b3d3d55b017304af1e2453/google-cloud-storage-image-resizer-0.0.5.tar.gz#sha256=495a1b3026221232b8e8f35d7699d2d827bade476ac5616265b55896f3a57b24 (from https://pypi.org/simple/google-cloud-storage-image-resizer/), version: 0.0.5 2019-12-18T14:19:08 Found link https://files.pythonhosted.org/packages/c6/3b/fb123d9fd19e21c7169ac633c1d135b4dc98768b00704516d6f4d0b82391/google-cloud-storage-image-resizer-0.0.7.tar.gz#sha256=4c3117b92994779693bec1f0a21889ce5c467aa6fdc13e0289813e36f2f44e15 (from https://pypi.org/simple/google-cloud-storage-image-resizer/), version: 0.0.7 2019-12-18T14:19:08 Found link https://files.pythonhosted.org/packages/b5/e4/c60353992a20018b731bb7fb810279a9fb4a4093840868ca5ae7e2008174/google-cloud-storage-image-resizer-0.0.8.tar.gz#sha256=f35ef0af20b729c7a2bccd1c53725ecef4edebdebd98c5955025aff56015a659 (from https://pypi.org/simple/google-cloud-storage-image-resizer/), version: 0.0.8 2019-12-18T14:19:08 Found link https://files.pythonhosted.org/packages/6d/05/3816a14c17997715ae0a7775169d7e322bf4a0d9b432615848a56a24cd77/google-cloud-storage-image-resizer-0.0.9.tar.gz#sha256=77d458f520ca2e54f91babd3f64882ef5ec8f8bcc3e688be2cb0d65127dfaf8c (from https://pypi.org/simple/google-cloud-storage-image-resizer/), version: 0.0.9 2019-12-18T14:19:08 Found link https://files.pythonhosted.org/packages/a8/6f/baf4626bb04020063dace911f259b8770aed6a73357ee8ab8943aacee423/google-cloud-storage-image-resizer-0.0.10.tar.gz#sha256=632dd315042c30c62f2466320917348794b86651fd5b88eeb341ab722ee5974c (from https://pypi.org/simple/google-cloud-storage-image-resizer/), version: 0.0.10 2019-12-18T14:19:08 Found link https://files.pythonhosted.org/packages/8f/15/8a92866156c8776458c359f90203bfe2e01391eaaa72d0fbcfa3f9eaf55e/google-cloud-storage-image-resizer-0.0.11.tar.gz#sha256=53b842e97c192927f4abead851064cc5eaa4e4aeaf1763f3d0656dc51ac0fed0 (from https://pypi.org/simple/google-cloud-storage-image-resizer/), version: 0.0.11 2019-12-18T14:19:08 Found link https://files.pythonhosted.org/packages/b0/00/2a966d8d470d5cc1157366c01159a4976d071a694be2ae34eaf86d211160/google-cloud-storage-image-resizer-0.0.18.tar.gz#sha256=9543e55c2d8acbd737d5e70823d510e540444497bcfa6f384855e5fd464b16d3 (from https://pypi.org/simple/google-cloud-storage-image-resizer/), version: 0.0.18 2019-12-18T14:19:08 Found link https://files.pythonhosted.org/packages/da/4f/b21ca2d4c078b3f2cde1690622b88f9fc5ad58bd8d79947c7a186c278029/google-cloud-storage-image-resizer-0.0.23.tar.gz#sha256=fce8ee969253706394bd454168104605526b86f2d788c42b5939080786401c28 (from https://pypi.org/simple/google-cloud-storage-image-resizer/), version: 0.0.23 2019-12-18T14:19:08 Found link https://files.pythonhosted.org/packages/00/9a/4ea6347ed540ca740791fde918b3596984e64f293cf87d6c2706296604fb/google-cloud-storage-image-resizer-0.0.24.tar.gz#sha256=3d5dbc342c850694b78f8ddceeb76a5780fb7b3747e05b0b4e867d4040476438 (from https://pypi.org/simple/google-cloud-storage-image-resizer/), version: 0.0.24 2019-12-18T14:19:08 Found link https://files.pythonhosted.org/packages/d7/c1/7939118c67bc73dec2f300be4495774a448458bacf8f39a66c6406e7a848/google-cloud-storage-image-resizer-0.0.25.tar.gz#sha256=9455fbdb83e84a12788ea0ed42b646daa17063867e4241bc70c7b8b744199156 (from https://pypi.org/simple/google-cloud-storage-image-resizer/), version: 0.0.25 2019-12-18T14:19:08 Found link https://files.pythonhosted.org/packages/34/77/04cedeeb678fd0061a424296807f095d84737e3ba2d6868bd5834c308fda/google-cloud-storage-image-resizer-0.0.27.tar.gz#sha256=fd5102009120f514aa05235d76f67795d99f92c9a5bfe3e03e6420bbea965f6f (from https://pypi.org/simple/google-cloud-storage-image-resizer/), version: 0.0.27 2019-12-18T14:19:08 Using version 0.0.27 (newest of versions: 0.0.27) 2019-12-18T14:19:08 Created temporary directory: /tmp/pip-unpack-xqbrkeeh 2019-12-18T14:19:08 Downloading https://files.pythonhosted.org/packages/34/77/04cedeeb678fd0061a424296807f095d84737e3ba2d6868bd5834c308fda/google-cloud-storage-image-resizer-0.0.27.tar.gz 2019-12-18T14:19:08 Downloading from URL https://files.pythonhosted.org/packages/34/77/04cedeeb678fd0061a424296807f095d84737e3ba2d6868bd5834c308fda/google-cloud-storage-image-resizer-0.0.27.tar.gz#sha256=fd5102009120f514aa05235d76f67795d99f92c9a5bfe3e03e6420bbea965f6f (from https://pypi.org/simple/google-cloud-storage-image-resizer/) 2019-12-18T14:19:08 Added google-cloud-storage-image-resizer==0.0.27 from https://files.pythonhosted.org/packages/34/77/04cedeeb678fd0061a424296807f095d84737e3ba2d6868bd5834c308fda/google-cloud-storage-image-resizer-0.0.27.tar.gz#sha256=fd5102009120f514aa05235d76f67795d99f92c9a5bfe3e03e6420bbea965f6f to build tracker '/tmp/pip-req-tracker-xfml96nr' 2019-12-18T14:19:08 Running setup.py (path:/tmp/pip-wheel-hbgw98v9/google-cloud-storage-image-resizer/setup.py) egg_info for package google-cloud-storage-image-resizer 2019-12-18T14:19:08 Running command python setup.py egg_info 2019-12-18T14:19:10 Searching Version in /tmp/pip-wheel-hbgw98v9/google-cloud-storage-image-resizer/PKG-INFO 2019-12-18T14:19:10 Read l: Metadata-Version: 2.1 2019-12-18T14:19:10 Read l: Name: google-cloud-storage-image-resizer 2019-12-18T14:19:10 Read l: Version: 0.0.27 2019-12-18T14:19:10 Read l: Summary: Import, rotate, crop and resize pictures into google Cloud Storage 2019-12-18T14:19:10 Read l: Home-page: https://github.com/erwan-lemonnier/cloud-storage-image-resizer 2019-12-18T14:19:10 Read l: Author: Erwan Lemonnier 2019-12-18T14:19:10 Read l: Author-email: erwan@lemonnier.se 2019-12-18T14:19:10 Read l: License: BSD 2019-12-18T14:19:10 Read l: Description: # cloudstorageimageresizer 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: A python module to import, rotate, crop and resize pictures into Google Cloud Storage 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: ## DISCLAIMER 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: THIS IS NOT AN OFFICIAL GOOGLE MODULE. 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: ## Synopsis 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: Typical usecase: fetch a bunch of image and generate thumbnails of various 2019-12-18T14:19:10 Read l: sizes for each of them, stored in Cloud Storage for further delivery via a CDN. 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: ``` 2019-12-18T14:19:10 Read l: from cloudstorageimageresizer import ImageResizer 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: # Initialize an ImageResizer: 2019-12-18T14:19:10 Read l: i = ImageResizer() 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: urls = [ 2019-12-18T14:19:10 Read l: 'http://www.gokqsw.com/images/picture/picture-3.jpg', 2019-12-18T14:19:10 Read l: 'http://www.gokqsw.com/images/picture/picture-4.jpg' 2019-12-18T14:19:10 Read l: ] 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: for url in urls: 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: # Fetch image into memory and store it in original format to a Google Cloud 2019-12-18T14:19:10 Read l: # Storage bucket 2019-12-18T14:19:10 Read l: i.fetch(url).store( 2019-12-18T14:19:10 Read l: in_bucket='my-images', 2019-12-18T14:19:10 Read l: key_name='image-original' 2019-12-18T14:19:10 Read l: ) 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: # Apply the image EXIF rotation, if any 2019-12-18T14:19:10 Read l: i.orientate() 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: # Resize this image, store it into a Google Cloud Storage bucket and return its url 2019-12-18T14:19:10 Read l: url1 = i.resize( 2019-12-18T14:19:10 Read l: width=200 2019-12-18T14:19:10 Read l: ).store( 2019-12-18T14:19:10 Read l: in_bucket='my-images', 2019-12-18T14:19:10 Read l: key_name='image-w200' 2019-12-18T14:19:10 Read l: ) 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: # Do it again, with a different size 2019-12-18T14:19:10 Read l: url2 = i.resize( 2019-12-18T14:19:10 Read l: height=400 2019-12-18T14:19:10 Read l: ).store( 2019-12-18T14:19:10 Read l: in_bucket='my-images', 2019-12-18T14:19:10 Read l: key_name='image-h200' 2019-12-18T14:19:10 Read l: ) 2019-12-18T14:19:10 Read l: ``` 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: ## More explanation 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: For method parameters, see the code (there isn't much of it ;-) 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: ImageResizer does all image operations in-memory, without writing images to disk. 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: The ImageResizer instance is immutable: its internal image is never modified. Each image operation instead returns a clone of the ImageResizer loaded with the modified image. This allows you to chain image operations, and manipulate the same image in different ways without having to explicitely keep a backup copy of it. 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: ImageResizer uses PIL, has reasonable defaults for downsizing images and handle images with alpha channels nicely. 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: All images are stored in png format to preserve transparency. 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: ## Installation 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: `cloudstorageimageresizer` requires Pillow, which in turn needs external 2019-12-18T14:19:10 Read l: libraries. On Ubuntu, you would for example need: 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: ``` 2019-12-18T14:19:10 Read l: sudo apt-get install libjpeg8 libjpeg8-dev libopenjpeg-dev 2019-12-18T14:19:10 Read l: ``` 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: Then 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: ``` 2019-12-18T14:19:10 Read l: pip install cloudstorageimageresizer 2019-12-18T14:19:10 Read l: ``` 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: ## Testing 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: Add your JSON Google API credentials in the file `gcloud-credentials.json`, 2019-12-18T14:19:10 Read l: edit the `BUCKET_NAME` in `example.py` and run it: 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: ``` 2019-12-18T14:19:10 Read l: python example.py 2019-12-18T14:19:10 Read l: ``` 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: ## PEP8 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: The project follows the PEP8 convention. 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: It uses `flake8` to check the code. If you've installed the `dev`-dependencies then you can just run the `flake8`-command and it'll tell you what needs to be fixed if applicable. 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: ## Source code 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: [https://github.com/erwan-lemonnier/cloud-storage-image-resizer](https://github.com/erwan-lemonnier/cloud-storage-image-resizer) 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: ## Author and contributors 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: Erwan Lemonnier
2019-12-18T14:19:10 Read l: [github.com/pymacaron](https://github.com/pymacaron)
2019-12-18T14:19:10 Read l: [github.com/erwan-lemonnier](https://github.com/erwan-lemonnier)
2019-12-18T14:19:10 Read l: [linkedin.com/in/erwan-lemonnier/](https://www.linkedin.com/in/erwan-lemonnier/) 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l:

2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: Johan Wänglöf
2019-12-18T14:19:10 Read l: [github.com/jwanglof](https://github.com/jwanglof)
2019-12-18T14:19:10 Read l: [linkedin.com/in/johan-w%C3%A4ngl%C3%B6f-09076192/](https://www.linkedin.com/in/johan-w%C3%A4ngl%C3%B6f-09076192/) 2019-12-18T14:19:10 Read l: 2019-12-18T14:19:10 Read l: Platform: any 2019-12-18T14:19:10 Read l: Classifier: Environment :: Web Environment 2019-12-18T14:19:10 Read l: Classifier: Intended Audience :: Developers 2019-12-18T14:19:10 Read l: Classifier: License :: OSI Approved :: BSD License 2019-12-18T14:19:10 Read l: Classifier: Operating System :: OS Independent 2019-12-18T14:19:10 Read l: Classifier: Programming Language :: Python 2019-12-18T14:19:10 Read l: Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content 2019-12-18T14:19:10 Read l: Classifier: Topic :: Software Development :: Libraries :: Python Modules 2019-12-18T14:19:10 Read l: Description-Content-Type: text/markdown 2019-12-18T14:19:10 version: 0.0.27 2019-12-18T14:19:10 running egg_info 2019-12-18T14:19:10 creating pip-egg-info/google_cloud_storage_image_resizer.egg-info 2019-12-18T14:19:10 writing pip-egg-info/google_cloud_storage_image_resizer.egg-info/PKG-INFO 2019-12-18T14:19:10 writing dependency_links to pip-egg-info/google_cloud_storage_image_resizer.egg-info/dependency_links.txt 2019-12-18T14:19:10 writing requirements to pip-egg-info/google_cloud_storage_image_resizer.egg-info/requires.txt 2019-12-18T14:19:10 writing top-level names to pip-egg-info/google_cloud_storage_image_resizer.egg-info/top_level.txt 2019-12-18T14:19:10 writing manifest file 'pip-egg-info/google_cloud_storage_image_resizer.egg-info/SOURCES.txt' 2019-12-18T14:19:10 reading manifest file 'pip-egg-info/google_cloud_storage_image_resizer.egg-info/SOURCES.txt' 2019-12-18T14:19:10 writing manifest file 'pip-egg-info/google_cloud_storage_image_resizer.egg-info/SOURCES.txt' 2019-12-18T14:19:10 Source in /tmp/pip-wheel-hbgw98v9/google-cloud-storage-image-resizer has version 0.0.27, which satisfies requirement google-cloud-storage-image-resizer==0.0.27 from https://files.pythonhosted.org/packages/34/77/04cedeeb678fd0061a424296807f095d84737e3ba2d6868bd5834c308fda/google-cloud-storage-image-resizer-0.0.27.tar.gz#sha256=fd5102009120f514aa05235d76f67795d99f92c9a5bfe3e03e6420bbea965f6f 2019-12-18T14:19:10 Removed google-cloud-storage-image-resizer==0.0.27 from https://files.pythonhosted.org/packages/34/77/04cedeeb678fd0061a424296807f095d84737e3ba2d6868bd5834c308fda/google-cloud-storage-image-resizer-0.0.27.tar.gz#sha256=fd5102009120f514aa05235d76f67795d99f92c9a5bfe3e03e6420bbea965f6f from build tracker '/tmp/pip-req-tracker-xfml96nr' 2019-12-18T14:19:10 Building wheels for collected packages: google-cloud-storage-image-resizer 2019-12-18T14:19:10 Created temporary directory: /tmp/pip-wheel-g4b5mh3p 2019-12-18T14:19:10 Building wheel for google-cloud-storage-image-resizer (setup.py): started 2019-12-18T14:19:10 Destination directory: /tmp/pip-wheel-g4b5mh3p 2019-12-18T14:19:10 Running command /usr/bin/python3 -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-wheel-hbgw98v9/google-cloud-storage-image-resizer/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-g4b5mh3p 2019-12-18T14:19:11 Searching Version in /tmp/pip-wheel-hbgw98v9/google-cloud-storage-image-resizer/PKG-INFO 2019-12-18T14:19:12 Read l: Metadata-Version: 2.1 2019-12-18T14:19:12 Read l: Name: google-cloud-storage-image-resizer 2019-12-18T14:19:12 Read l: Version: 0.0.27 2019-12-18T14:19:12 Read l: Summary: Import, rotate, crop and resize pictures into google Cloud Storage 2019-12-18T14:19:12 Read l: Home-page: https://github.com/erwan-lemonnier/cloud-storage-image-resizer 2019-12-18T14:19:12 Read l: Author: Erwan Lemonnier 2019-12-18T14:19:12 Read l: Author-email: erwan@lemonnier.se 2019-12-18T14:19:12 Read l: License: BSD 2019-12-18T14:19:12 Read l: Description: # cloudstorageimageresizer 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: A python module to import, rotate, crop and resize pictures into Google Cloud Storage 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: ## DISCLAIMER 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: THIS IS NOT AN OFFICIAL GOOGLE MODULE. 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: ## Synopsis 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: Typical usecase: fetch a bunch of image and generate thumbnails of various 2019-12-18T14:19:12 Read l: sizes for each of them, stored in Cloud Storage for further delivery via a CDN. 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: ``` 2019-12-18T14:19:12 Read l: from cloudstorageimageresizer import ImageResizer 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: # Initialize an ImageResizer: 2019-12-18T14:19:12 Read l: i = ImageResizer() 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: urls = [ 2019-12-18T14:19:12 Read l: 'http://www.gokqsw.com/images/picture/picture-3.jpg', 2019-12-18T14:19:12 Read l: 'http://www.gokqsw.com/images/picture/picture-4.jpg' 2019-12-18T14:19:12 Read l: ] 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: for url in urls: 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: # Fetch image into memory and store it in original format to a Google Cloud 2019-12-18T14:19:12 Read l: # Storage bucket 2019-12-18T14:19:12 Read l: i.fetch(url).store( 2019-12-18T14:19:12 Read l: in_bucket='my-images', 2019-12-18T14:19:12 Read l: key_name='image-original' 2019-12-18T14:19:12 Read l: ) 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: # Apply the image EXIF rotation, if any 2019-12-18T14:19:12 Read l: i.orientate() 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: # Resize this image, store it into a Google Cloud Storage bucket and return its url 2019-12-18T14:19:12 Read l: url1 = i.resize( 2019-12-18T14:19:12 Read l: width=200 2019-12-18T14:19:12 Read l: ).store( 2019-12-18T14:19:12 Read l: in_bucket='my-images', 2019-12-18T14:19:12 Read l: key_name='image-w200' 2019-12-18T14:19:12 Read l: ) 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: # Do it again, with a different size 2019-12-18T14:19:12 Read l: url2 = i.resize( 2019-12-18T14:19:12 Read l: height=400 2019-12-18T14:19:12 Read l: ).store( 2019-12-18T14:19:12 Read l: in_bucket='my-images', 2019-12-18T14:19:12 Read l: key_name='image-h200' 2019-12-18T14:19:12 Read l: ) 2019-12-18T14:19:12 Read l: ``` 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: ## More explanation 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: For method parameters, see the code (there isn't much of it ;-) 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: ImageResizer does all image operations in-memory, without writing images to disk. 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: The ImageResizer instance is immutable: its internal image is never modified. Each image operation instead returns a clone of the ImageResizer loaded with the modified image. This allows you to chain image operations, and manipulate the same image in different ways without having to explicitely keep a backup copy of it. 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: ImageResizer uses PIL, has reasonable defaults for downsizing images and handle images with alpha channels nicely. 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: All images are stored in png format to preserve transparency. 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: ## Installation 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: `cloudstorageimageresizer` requires Pillow, which in turn needs external 2019-12-18T14:19:12 Read l: libraries. On Ubuntu, you would for example need: 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: ``` 2019-12-18T14:19:12 Read l: sudo apt-get install libjpeg8 libjpeg8-dev libopenjpeg-dev 2019-12-18T14:19:12 Read l: ``` 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: Then 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: ``` 2019-12-18T14:19:12 Read l: pip install cloudstorageimageresizer 2019-12-18T14:19:12 Read l: ``` 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: ## Testing 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: Add your JSON Google API credentials in the file `gcloud-credentials.json`, 2019-12-18T14:19:12 Read l: edit the `BUCKET_NAME` in `example.py` and run it: 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: ``` 2019-12-18T14:19:12 Read l: python example.py 2019-12-18T14:19:12 Read l: ``` 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: ## PEP8 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: The project follows the PEP8 convention. 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: It uses `flake8` to check the code. If you've installed the `dev`-dependencies then you can just run the `flake8`-command and it'll tell you what needs to be fixed if applicable. 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: ## Source code 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: [https://github.com/erwan-lemonnier/cloud-storage-image-resizer](https://github.com/erwan-lemonnier/cloud-storage-image-resizer) 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: ## Author and contributors 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: Erwan Lemonnier
2019-12-18T14:19:12 Read l: [github.com/pymacaron](https://github.com/pymacaron)
2019-12-18T14:19:12 Read l: [github.com/erwan-lemonnier](https://github.com/erwan-lemonnier)
2019-12-18T14:19:12 Read l: [linkedin.com/in/erwan-lemonnier/](https://www.linkedin.com/in/erwan-lemonnier/) 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l:

2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: Johan Wänglöf
2019-12-18T14:19:12 Read l: [github.com/jwanglof](https://github.com/jwanglof)
2019-12-18T14:19:12 Read l: [linkedin.com/in/johan-w%C3%A4ngl%C3%B6f-09076192/](https://www.linkedin.com/in/johan-w%C3%A4ngl%C3%B6f-09076192/) 2019-12-18T14:19:12 Read l: 2019-12-18T14:19:12 Read l: Platform: any 2019-12-18T14:19:12 Read l: Classifier: Environment :: Web Environment 2019-12-18T14:19:12 Read l: Classifier: Intended Audience :: Developers 2019-12-18T14:19:12 Read l: Classifier: License :: OSI Approved :: BSD License 2019-12-18T14:19:12 Read l: Classifier: Operating System :: OS Independent 2019-12-18T14:19:12 Read l: Classifier: Programming Language :: Python 2019-12-18T14:19:12 Read l: Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content 2019-12-18T14:19:12 Read l: Classifier: Topic :: Software Development :: Libraries :: Python Modules 2019-12-18T14:19:12 Read l: Description-Content-Type: text/markdown 2019-12-18T14:19:12 version: 0.0.27 2019-12-18T14:19:12 running bdist_wheel 2019-12-18T14:19:12 running build 2019-12-18T14:19:12 running build_py 2019-12-18T14:19:12 creating build 2019-12-18T14:19:12 creating build/lib 2019-12-18T14:19:12 copying cloudstorageimageresizer.py -> build/lib 2019-12-18T14:19:12 installing to build/bdist.linux-armv7l/wheel 2019-12-18T14:19:12 running install 2019-12-18T14:19:12 running install_lib 2019-12-18T14:19:12 creating build/bdist.linux-armv7l 2019-12-18T14:19:12 creating build/bdist.linux-armv7l/wheel 2019-12-18T14:19:12 copying build/lib/cloudstorageimageresizer.py -> build/bdist.linux-armv7l/wheel 2019-12-18T14:19:12 running install_egg_info 2019-12-18T14:19:12 running egg_info 2019-12-18T14:19:12 writing google_cloud_storage_image_resizer.egg-info/PKG-INFO 2019-12-18T14:19:12 writing dependency_links to google_cloud_storage_image_resizer.egg-info/dependency_links.txt 2019-12-18T14:19:12 writing requirements to google_cloud_storage_image_resizer.egg-info/requires.txt 2019-12-18T14:19:12 writing top-level names to google_cloud_storage_image_resizer.egg-info/top_level.txt 2019-12-18T14:19:12 reading manifest file 'google_cloud_storage_image_resizer.egg-info/SOURCES.txt' 2019-12-18T14:19:12 writing manifest file 'google_cloud_storage_image_resizer.egg-info/SOURCES.txt' 2019-12-18T14:19:12 Copying google_cloud_storage_image_resizer.egg-info to build/bdist.linux-armv7l/wheel/google_cloud_storage_image_resizer-0.0.27-py3.7.egg-info 2019-12-18T14:19:12 running install_scripts 2019-12-18T14:19:12 creating build/bdist.linux-armv7l/wheel/google_cloud_storage_image_resizer-0.0.27.dist-info/WHEEL 2019-12-18T14:19:12 creating '/tmp/pip-wheel-g4b5mh3p/google_cloud_storage_image_resizer-0.0.27-py3-none-any.whl' and adding 'build/bdist.linux-armv7l/wheel' to it 2019-12-18T14:19:12 adding 'cloudstorageimageresizer.py' 2019-12-18T14:19:12 adding 'google_cloud_storage_image_resizer-0.0.27.dist-info/METADATA' 2019-12-18T14:19:12 adding 'google_cloud_storage_image_resizer-0.0.27.dist-info/WHEEL' 2019-12-18T14:19:12 adding 'google_cloud_storage_image_resizer-0.0.27.dist-info/top_level.txt' 2019-12-18T14:19:12 adding 'google_cloud_storage_image_resizer-0.0.27.dist-info/RECORD' 2019-12-18T14:19:12 removing build/bdist.linux-armv7l/wheel 2019-12-18T14:19:12 Building wheel for google-cloud-storage-image-resizer (setup.py): finished with status 'done' 2019-12-18T14:19:12 Stored in directory: /tmp/tmp44n4nu7j 2019-12-18T14:19:12 Successfully built google-cloud-storage-image-resizer 2019-12-18T14:19:12 Cleaning up... 2019-12-18T14:19:12 Removing source in /tmp/pip-wheel-hbgw98v9/google-cloud-storage-image-resizer 2019-12-18T14:19:12 Removed build tracker '/tmp/pip-req-tracker-xfml96nr'