[{"data":1,"prerenderedAt":264},["ShallowReactive",2],{"project-17918825":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":34,"aspects":35,"strip":41,"post_text":43,"what":44,"said":80,"maker_in_thread":146,"shape":155,"grid":159,"attempts":225,"same_week":226,"maker_shows":31,"maker_hidden":256,"reader_version":257,"card":258},"17918825","Snowy","a new image library for Python","title","Show HN: Snowy – a new image library for Python","https:\u002F\u002Fgithub.prideout.net\u002Fsnowy\u002F","github.prideout.net","prideout",1536161208,2018,124,26,342,2155,16,"notable","languages","image processing library","library",[24,25,26,27],"python image library","numpy image processing","floating point image filtering","image convolution python","curious",0.231,{"positive":31,"neutral":32,"mixed":33,"critical":33},3,12,0,15,{"design":36,"docs":38,"idea":39,"performance":40},{"positive":37,"critical":33},1,{"positive":37,"critical":33},{"positive":37,"critical":33},{"positive":33,"critical":33},[42,33,31,33,33,33,31,31,31,31,42,33,31,31,33,31,33,31,33,33,31,33,42,31,33,31],5,null,{"problem":45,"audience":52,"pricing":43,"motivation":43,"time_to_build":43,"stack":58,"openness":79,"stage":79,"team_size":79},{"value":46,"source":47,"evidence":48},"High-quality filtering of floating-point image data","maker",[49],{"id":50,"by":11,"text":51},"17921715","High-quality filtering of floating-point image data.",{"value":53,"source":47,"evidence":54},"Graphics developers, technical artists, and people working with map or height map imagery",[55],{"id":56,"by":11,"text":57},"17920837","It's a small target audience :) I think graphics developers like myself would be interested; people who work with distance fields, tileable images, HDR imagery, and height map…",[59,65,75],{"value":60,"source":47,"evidence":61},"Python",[62],{"id":63,"by":11,"text":64},"17919857","Not as fast as PIL but has reasonable optimizations like performing convolution in two passes, caching filter weights from row to row, and using numba decorations. It's not quite…",{"value":66,"source":47,"evidence":67},"numpy",[68,72],{"id":69,"by":70,"text":71},"17921142","noobermin","Massive opinionated opinion ahead: I like libraries that don't invent new types but just build around established ones. I think it's great that it uses numpy arrays and doesn't…",{"id":73,"by":11,"text":74},"17920312","Understood. Maybe it helps that Snowy does not define an Image object, instead it simply operates on numpy arrays. See also https:\u002F\u002Fgithub.prideout.net\u002Fsnowy\u002Findex.html#interop",{"value":76,"source":47,"evidence":77},"numba",[78],{"id":63,"by":11,"text":64},"unknown",{"praise":81,"objections":102,"requests":109,"questions":118,"alternatives":133},[82,88,95],{"value":83,"source":84,"evidence":85},"Design of building on numpy arrays rather than new types","commenter",[86,87],{"id":69,"by":70,"text":71},{"id":73,"by":11,"text":74},{"value":89,"source":84,"evidence":90},"Interoperability with other image libraries",[91],{"id":92,"by":93,"text":94},"17920120","ktpsns","Something I would miss as a user is interoperability. There should be ways to read from\u002Fexport to numpy arrays, pytables, PIL, OpenCV, ImageMagick, basically all the mentioned…",{"value":96,"source":84,"evidence":97},"User-friendly API for quick image manipulation",[98],{"id":99,"by":100,"text":101},"17923650","supernintendo","Well done! Some commenters have compared this to ImageMagick. I would equate this to comparing love2d [1] to SDL. If you want a user-friendly API for quick image manipulation,…",[103],{"value":104,"source":47,"evidence":105},"No method chaining (daisy-chaining) support",[106],{"id":107,"by":11,"text":108},"17921514","Yes, I'm happy with this design decision. The only bummer is that it doesn't allow daisy-chaining, as in: ``` img = img.resize(...).blur(....).hflip() ```",[110],{"value":111,"source":84,"evidence":112},"Support for method chaining",[113,114],{"id":107,"by":11,"text":108},{"id":115,"by":116,"text":117},"17923182","prestonh","What is the alternative besides chaining, devise a new variable name for every operation? I understand that daisy chaining can be error prone, but the alternative is so difficult…",[119,126],{"value":120,"source":84,"evidence":121},"How does performance compare to PIL and OpenCV",[122],{"id":123,"by":124,"text":125},"17919507","staticautomatic","Neat. How does it benchmark against PIL and OpenCV for common image processing tasks?",{"value":127,"source":84,"evidence":128},"Difference from ImageMagick",[129],{"id":130,"by":131,"text":132},"17919598","jhare","What's the overlap with ImageMagick and its pals? This meant to replace or just be a smaller-tool-for-the-job?",[134,138,142],{"value":135,"source":84,"evidence":136},"PIL",[137],{"id":123,"by":124,"text":125},{"value":139,"source":84,"evidence":140},"ImageMagick",[141],{"id":130,"by":131,"text":132},{"value":143,"source":84,"evidence":144},"OpenCV",[145],{"id":123,"by":124,"text":125},{"comments":147,"answered":148,"key":149},7,4,[150,151,152],{"id":107,"text":108},{"id":73,"text":74},{"id":153,"text":154},"17919912","Smaller tool, not a replacement. ImageMagick is much bigger, more powerful, and more production ready. Snowy is hopefully a bit more Pythonic and easy to play with.",{"commenters":156,"max_depth":42,"maker_replies":147,"first_comment_mins":157,"lifespan_hours":158},17,67,23,[160,162,164,168,171,175,178,179,182,184,187,189,190,194,196,197,201,202,204,206,209,213,216,218,221,222],[69,33,42,161,70,33],"project\u002Fpositive\u002Fdesign",[107,33,33,163,11,37],"project\u002Fmixed\u002Fdesign",[165,33,31,166,167,33],"17921632","project\u002Fneutral\u002Fdesign","Sileni",[169,33,33,170,70,33],"17922329","commenter\u002Fneutral\u002Fdesign",[172,33,33,173,174,33],"17922663","commenter\u002Fneutral\u002Fnone","cozzyd",[176,33,33,170,177,33],"17922821","_eht",[115,33,31,166,116,33],[180,33,31,166,181,33],"17923310","jacobolus",[183,33,31,166,167,33],"17926322",[185,33,31,166,186,33],"17923504","ovis",[92,37,42,188,93,33],"project\u002Fpositive\u002Fdocs",[73,37,33,166,11,37],[191,37,31,192,193,33],"17924881","project\u002Fneutral\u002Fidea","mynewtb",[130,195,31,192,131,33],2,[153,195,33,192,11,37],[198,195,31,199,200,33],"17920760","maker\u002Fneutral\u002Fidea","bobosha",[56,195,33,199,11,37],[123,31,31,203,124,33],"project\u002Fneutral\u002Fperformance",[63,31,33,205,11,37],"project\u002Fmixed\u002Fperformance",[207,31,33,173,208,33],"17920275","nine_k",[210,148,31,211,212,33],"17920291","project\u002Fneutral\u002Fdocs","firefwing24",[214,148,33,215,11,37],"17920379","maker\u002Fneutral\u002Fdocs",[99,42,42,217,100,33],"project\u002Fpositive\u002Fidea",[219,220,31,215,167,33],"17921643",6,[50,220,33,199,11,37],[223,220,31,192,224,33],"17922611","ORioN63",[],[227,232,236,241,246,251],{"id":228,"name":229,"points":230,"category":231},"17905666","Select Star SQL",700,"learning_science",{"id":233,"name":234,"points":235,"category":231},"17909594","Magic Sandbox",392,{"id":237,"name":238,"points":239,"category":240},"17885908","Proven",334,"security_privacy",{"id":242,"name":243,"points":244,"category":245},"17897283","2048.cpp",135,"games",{"id":247,"name":248,"points":249,"category":250},"17913029","AgentMaps",112,"ai",{"id":252,"name":253,"points":254,"category":255},"17901092","Feediary",109,"consumer_social",false,"v2",{"id":259,"name":5,"line":6,"ai":256,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":260,"top":18,"kw":261,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":262,"url":9,"mix":263,"praise":83,"objection":104,"sub":21},17918825,0.23,[24,25,26,27],"50300033335033030300305303",[31,32,33,33],1794036569228]