CHANGES.rst 190 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468
  1. Changelog (Pillow)
  2. ==================
  3. 10.2.0 (2024-01-02)
  4. -------------------
  5. - Add ``keep_rgb`` option when saving JPEG to prevent conversion of RGB colorspace #7553
  6. [bgilbert, radarhere]
  7. - Trim glyph size in ImageFont.getmask() #7669, #7672
  8. [radarhere, nulano]
  9. - Deprecate IptcImagePlugin helpers #7664
  10. [nulano, hugovk, radarhere]
  11. - Allow uncompressed TIFF images to be saved in chunks #7650
  12. [radarhere]
  13. - Concatenate multiple JPEG EXIF markers #7496
  14. [radarhere]
  15. - Changed IPTC tile tuple to match other plugins #7661
  16. [radarhere]
  17. - Do not assign new fp attribute when exiting context manager #7566
  18. [radarhere]
  19. - Support arbitrary masks for uncompressed RGB DDS images #7589
  20. [radarhere, akx]
  21. - Support setting ROWSPERSTRIP tag #7654
  22. [radarhere]
  23. - Apply ImageFont.MAX_STRING_LENGTH to ImageFont.getmask() #7662
  24. [radarhere]
  25. - Optimise ``ImageColor`` using ``functools.lru_cache`` #7657
  26. [hugovk]
  27. - Restricted environment keys for ImageMath.eval() #7655
  28. [wiredfool, radarhere]
  29. - Optimise ``ImageMode.getmode`` using ``functools.lru_cache`` #7641
  30. [hugovk, radarhere]
  31. - Fix incorrect color blending for overlapping glyphs #7497
  32. [ZachNagengast, nulano, radarhere]
  33. - Attempt memory mapping when tile args is a string #7565
  34. [radarhere]
  35. - Fill identical pixels with transparency in subsequent frames when saving GIF #7568
  36. [radarhere]
  37. - Corrected duration when combining multiple GIF frames into single frame #7521
  38. [radarhere]
  39. - Handle disposing GIF background from outside palette #7515
  40. [radarhere]
  41. - Seek past the data when skipping a PSD layer #7483
  42. [radarhere]
  43. - Import plugins relative to the module #7576
  44. [deliangyang, jaxx0n]
  45. - Translate encoder error codes to strings; deprecate ``ImageFile.raise_oserror()`` #7609
  46. [bgilbert, radarhere]
  47. - Support reading BC4U and DX10 BC1 images #6486
  48. [REDxEYE, radarhere, hugovk]
  49. - Optimize ImageStat.Stat.extrema #7593
  50. [florath, radarhere]
  51. - Handle pathlib.Path in FreeTypeFont #7578
  52. [radarhere, hugovk, nulano]
  53. - Added support for reading DX10 BC4 DDS images #7603
  54. [sambvfx, radarhere]
  55. - Optimized ImageStat.Stat.count #7599
  56. [florath]
  57. - Correct PDF palette size when saving #7555
  58. [radarhere]
  59. - Fixed closing file pointer with olefile 0.47 #7594
  60. [radarhere]
  61. - Raise ValueError when TrueType font size is not greater than zero #7584, #7587
  62. [akx, radarhere]
  63. - If absent, do not try to close fp when closing image #7557
  64. [RaphaelVRossi, radarhere]
  65. - Allow configuring JPEG restart marker interval on save #7488
  66. [bgilbert, radarhere]
  67. - Decrement reference count for PyObject #7549
  68. [radarhere]
  69. - Implement ``streamtype=1`` option for tables-only JPEG encoding #7491
  70. [bgilbert, radarhere]
  71. - If save_all PNG only has one frame, do not create animated image #7522
  72. [radarhere]
  73. - Fixed frombytes() for images with a zero dimension #7493
  74. [radarhere]
  75. 10.1.0 (2023-10-15)
  76. -------------------
  77. - Added TrueType default font to allow for different sizes #7354
  78. [radarhere]
  79. - Fixed invalid argument warning #7442
  80. [radarhere]
  81. - Added ImageOps cover method #7412
  82. [radarhere, hugovk]
  83. - Catch struct.error from truncated EXIF when reading JPEG DPI #7458
  84. [radarhere]
  85. - Consider default image when selecting mode for PNG save_all #7437
  86. [radarhere]
  87. - Support BGR;15, BGR;16 and BGR;24 access, unpacking and putdata #7303
  88. [radarhere]
  89. - Added CMYK to RGB unpacker #7310
  90. [radarhere]
  91. - Improved flexibility of XMP parsing #7274
  92. [radarhere]
  93. - Support reading 8-bit YCbCr TIFF images #7415
  94. [radarhere]
  95. - Allow saving I;16B images as PNG #7302
  96. [radarhere]
  97. - Corrected drawing I;16 points and writing I;16 text #7257
  98. [radarhere]
  99. - Set blue channel to 128 for BC5S #7413
  100. [radarhere]
  101. - Increase flexibility when reading IPTC fields #7319
  102. [radarhere]
  103. - Set C palette to be empty by default #7289
  104. [radarhere]
  105. - Added gs_binary to control Ghostscript use on all platforms #7392
  106. [radarhere]
  107. - Read bounding box information from the trailer of EPS files if specified #7382
  108. [nopperl, radarhere]
  109. - Added reading 8-bit color DDS images #7426
  110. [radarhere]
  111. - Added has_transparency_data #7420
  112. [radarhere, hugovk]
  113. - Fixed bug when reading BC5S DDS images #7401
  114. [radarhere]
  115. - Prevent TIFF orientation from being applied more than once #7383
  116. [radarhere]
  117. - Use previous pixel alpha for QOI_OP_RGB #7357
  118. [radarhere]
  119. - Added BC5U reading #7358
  120. [radarhere]
  121. - Allow getpixel() to accept a list #7355
  122. [radarhere, homm]
  123. - Allow GaussianBlur and BoxBlur to accept a sequence of x and y radii #7336
  124. [radarhere]
  125. - Expand JPEG buffer size when saving optimized or progressive #7345
  126. [radarhere]
  127. - Added session type check for Linux in ImageGrab.grabclipboard() #7332
  128. [TheNooB2706, radarhere, hugovk]
  129. - Allow "loop=None" when saving GIF images #7329
  130. [radarhere]
  131. - Fixed transparency when saving P mode images to PDF #7323
  132. [radarhere]
  133. - Added saving LA images as PDFs #7299
  134. [radarhere]
  135. - Set SMaskInData to 1 for PDFs with alpha #7316, #7317
  136. [radarhere]
  137. - Changed Image mode property to be read-only by default #7307
  138. [radarhere]
  139. - Silence exceptions in _repr_jpeg_ and _repr_png_ #7266
  140. [mtreinish, radarhere]
  141. - Do not use transparency when saving GIF if it has been removed when normalizing mode #7284
  142. [radarhere]
  143. - Fix missing symbols when libtiff depends on libjpeg #7270
  144. [heitbaum]
  145. 10.0.1 (2023-09-15)
  146. -------------------
  147. - Updated libwebp to 1.3.2 #7395
  148. [radarhere]
  149. - Updated zlib to 1.3 #7344
  150. [radarhere]
  151. 10.0.0 (2023-07-01)
  152. -------------------
  153. - Fixed deallocating mask images #7246
  154. [radarhere]
  155. - Added ImageFont.MAX_STRING_LENGTH #7244
  156. [radarhere, hugovk]
  157. - Fix Windows build with pyproject.toml #7230
  158. [hugovk, nulano, radarhere]
  159. - Do not close provided file handles with libtiff #7199
  160. [radarhere]
  161. - Convert to HSV if mode is HSV in getcolor() #7226
  162. [radarhere]
  163. - Added alpha_only argument to getbbox() #7123
  164. [radarhere. hugovk]
  165. - Prioritise speed in _repr_png_ #7242
  166. [radarhere]
  167. - Do not use CFFI access by default on PyPy #7236
  168. [radarhere]
  169. - Limit size even if one dimension is zero in decompression bomb check #7235
  170. [radarhere]
  171. - Use --config-settings instead of deprecated --global-option #7171
  172. [radarhere]
  173. - Better C integer definitions #6645
  174. [Yay295, hugovk]
  175. - Fixed finding dependencies on Cygwin #7175
  176. [radarhere]
  177. - Changed grabclipboard() to use PNG instead of JPG compression on macOS #7219
  178. [abey79, radarhere]
  179. - Added in_place argument to ImageOps.exif_transpose() #7092
  180. [radarhere]
  181. - Fixed calling putpalette() on L and LA images before load() #7187
  182. [radarhere]
  183. - Fixed saving TIFF multiframe images with LONG8 tag types #7078
  184. [radarhere]
  185. - Fixed combining single duration across duplicate APNG frames #7146
  186. [radarhere]
  187. - Remove temporary file when error is raised #7148
  188. [radarhere]
  189. - Do not use temporary file when grabbing clipboard on Linux #7200
  190. [radarhere]
  191. - If the clipboard fails to open on Windows, wait and try again #7141
  192. [radarhere]
  193. - Fixed saving multiple 1 mode frames to GIF #7181
  194. [radarhere]
  195. - Replaced absolute PIL import with relative import #7173
  196. [radarhere]
  197. - Replaced deprecated Py_FileSystemDefaultEncoding for Python >= 3.12 #7192
  198. [radarhere]
  199. - Improved wl-paste mimetype handling in ImageGrab #7094
  200. [rrcgat, radarhere]
  201. - Added _repr_jpeg_() for IPython display_jpeg #7135
  202. [n3011, radarhere, nulano]
  203. - Use "/sbin/ldconfig" if ldconfig is not found #7068
  204. [radarhere]
  205. - Prefer screenshots using XCB over gnome-screenshot #7143
  206. [nulano, radarhere]
  207. - Fixed joined corners for ImageDraw rounded_rectangle() odd dimensions #7151
  208. [radarhere]
  209. - Support reading signed 8-bit TIFF images #7111
  210. [radarhere]
  211. - Added width argument to ImageDraw regular_polygon #7132
  212. [radarhere]
  213. - Support I mode for ImageFilter.BuiltinFilter #7108
  214. [radarhere]
  215. - Raise error from stderr of Linux ImageGrab.grabclipboard() command #7112
  216. [radarhere]
  217. - Added unpacker from I;16B to I;16 #7125
  218. [radarhere]
  219. - Support float font sizes #7107
  220. [radarhere]
  221. - Use later value for duplicate xref entries in PdfParser #7102
  222. [radarhere]
  223. - Load before getting size in __getstate__ #7105
  224. [bigcat88, radarhere]
  225. - Fixed type handling for include and lib directories #7069
  226. [adisbladis, radarhere]
  227. - Remove deprecations for Pillow 10.0.0 #7059, #7080
  228. [hugovk, radarhere]
  229. - Drop support for soon-EOL Python 3.7 #7058
  230. [hugovk, radarhere]
  231. 9.5.0 (2023-04-01)
  232. ------------------
  233. - Added ImageSourceData to TAGS_V2 #7053
  234. [radarhere]
  235. - Clear PPM half token after use #7052
  236. [radarhere]
  237. - Removed absolute path to ldconfig #7044
  238. [radarhere]
  239. - Support custom comments and PLT markers when saving JPEG2000 images #6903
  240. [joshware, radarhere, hugovk]
  241. - Load before getting size in __array_interface__ #7034
  242. [radarhere]
  243. - Support creating BGR;15, BGR;16 and BGR;24 images, but drop support for BGR;32 #7010
  244. [radarhere]
  245. - Consider transparency when applying APNG blend mask #7018
  246. [radarhere]
  247. - Round duration when saving animated WebP images #6996
  248. [radarhere]
  249. - Added reading of JPEG2000 comments #6909
  250. [radarhere]
  251. - Decrement reference count #7003
  252. [radarhere, nulano]
  253. - Allow libtiff_support_custom_tags to be missing #7020
  254. [radarhere]
  255. - Improved I;16N support #6834
  256. [radarhere]
  257. - Added QOI reading #6852
  258. [radarhere, hugovk]
  259. - Added saving RGBA images as PDFs #6925
  260. [radarhere]
  261. - Do not raise an error if os.environ does not contain PATH #6935
  262. [radarhere, hugovk]
  263. - Close OleFileIO instance when closing or exiting FPX or MIC #7005
  264. [radarhere]
  265. - Added __int__ to IFDRational for Python >= 3.11 #6998
  266. [radarhere]
  267. - Added memoryview support to Dib.frombytes() #6988
  268. [radarhere, nulano]
  269. - Close file pointer copy in the libtiff encoder if still open #6986
  270. [fcarron, radarhere]
  271. - Raise an error if ImageDraw co-ordinates are incorrectly ordered #6978
  272. [radarhere]
  273. - Added "corners" argument to ImageDraw rounded_rectangle() #6954
  274. [radarhere]
  275. - Added memoryview support to frombytes() #6974
  276. [radarhere]
  277. - Allow comments in FITS images #6973
  278. [radarhere]
  279. - Support saving PDF with different X and Y resolutions #6961
  280. [jvanderneutstulen, radarhere, hugovk]
  281. - Fixed writing int as UNDEFINED tag #6950
  282. [radarhere]
  283. - Raise an error if EXIF data is too long when saving JPEG #6939
  284. [radarhere]
  285. - Handle more than one directory returned by pkg-config #6896
  286. [sebastic, radarhere]
  287. - Do not retry past formats when loading all formats for the first time #6902
  288. [radarhere]
  289. - Do not retry specified formats if they failed when opening #6893
  290. [radarhere]
  291. - Do not unintentionally load TIFF format at first #6892
  292. [radarhere]
  293. - Stop reading when EPS line becomes too long #6897
  294. [radarhere]
  295. - Allow writing IFDRational to BYTE tag #6890
  296. [radarhere]
  297. - Raise ValueError for BoxBlur filter with negative radius #6874
  298. [hugovk, radarhere]
  299. - Support arbitrary number of loaded modules on Windows #6761
  300. [javidcf, radarhere, nulano]
  301. 9.4.0 (2023-01-02)
  302. ------------------
  303. - Fixed null pointer dereference crash with malformed font #6846
  304. [wiredfool, radarhere]
  305. - Return from ImagingFill early if image has a zero dimension #6842
  306. [radarhere]
  307. - Reversed deprecations for Image constants, except for duplicate Resampling attributes #6830
  308. [radarhere]
  309. - Improve exception traceback readability #6836
  310. [hugovk, radarhere]
  311. - Do not attempt to read IFD1 if absent #6840
  312. [radarhere]
  313. - Fixed writing int as ASCII tag #6800
  314. [radarhere]
  315. - If available, use wl-paste or xclip for grabclipboard() on Linux #6783
  316. [radarhere]
  317. - Added signed option when saving JPEG2000 images #6709
  318. [radarhere]
  319. - Patch OpenJPEG to include ARM64 fix #6718
  320. [radarhere]
  321. - Added support for I;16 modes in putdata() #6825
  322. [radarhere]
  323. - Added conversion from RGBa to RGB #6708
  324. [radarhere]
  325. - Added DDS support for uncompressed L and LA images #6820
  326. [radarhere, REDxEYE]
  327. - Added LightSource tag values to ExifTags #6749
  328. [radarhere]
  329. - Fixed PyAccess after changing ICO size #6821
  330. [radarhere]
  331. - Do not use EXIF from info when saving PNG images #6819
  332. [radarhere]
  333. - Fixed saving EXIF data to MPO #6817
  334. [radarhere]
  335. - Added Exif hide_offsets() #6762
  336. [radarhere]
  337. - Only compare to previous frame when checking for duplicate GIF frames while saving #6787
  338. [radarhere]
  339. - Always initialize all plugins in registered_extensions() #6811
  340. [radarhere]
  341. - Ignore non-opaque WebP background when saving as GIF #6792
  342. [radarhere]
  343. - Only set tile in ImageFile __setstate__ #6793
  344. [radarhere]
  345. - When reading BLP, do not trust JPEG decoder to determine image is CMYK #6767
  346. [radarhere]
  347. - Added IFD enum to ExifTags #6748
  348. [radarhere]
  349. - Fixed bug combining GIF frame durations #6779
  350. [radarhere]
  351. - Support saving JPEG comments #6774
  352. [smason, radarhere]
  353. - Added getxmp() to WebPImagePlugin #6758
  354. [radarhere]
  355. - Added "exact" option when saving WebP #6747
  356. [ashafaei, radarhere]
  357. - Use fractional coordinates when drawing text #6722
  358. [radarhere]
  359. - Fixed writing int as BYTE tag #6740
  360. [radarhere]
  361. - Added MP Format Version when saving MPO #6735
  362. [radarhere]
  363. - Added Interop to ExifTags #6724
  364. [radarhere]
  365. - CVE-2007-4559 patch when building on Windows #6704
  366. [TrellixVulnTeam, nulano, radarhere]
  367. - Fix compiler warning: accessing 64 bytes in a region of size 48 #6714
  368. [wiredfool]
  369. - Use verbose flag for pip install #6713
  370. [wiredfool, radarhere]
  371. 9.3.0 (2022-10-29)
  372. ------------------
  373. - Limit SAMPLESPERPIXEL to avoid runtime DOS #6700
  374. [wiredfool]
  375. - Initialize libtiff buffer when saving #6699
  376. [radarhere]
  377. - Inline fname2char to fix memory leak #6329
  378. [nulano]
  379. - Fix memory leaks related to text features #6330
  380. [nulano]
  381. - Use double quotes for version check on old CPython on Windows #6695
  382. [hugovk]
  383. - Remove backup implementation of Round for Windows platforms #6693
  384. [cgohlke]
  385. - Fixed set_variation_by_name offset #6445
  386. [radarhere]
  387. - Fix malloc in _imagingft.c:font_setvaraxes #6690
  388. [cgohlke]
  389. - Release Python GIL when converting images using matrix operations #6418
  390. [hmaarrfk]
  391. - Added ExifTags enums #6630
  392. [radarhere]
  393. - Do not modify previous frame when calculating delta in PNG #6683
  394. [radarhere]
  395. - Added support for reading BMP images with RLE4 compression #6674
  396. [npjg, radarhere]
  397. - Decode JPEG compressed BLP1 data in original mode #6678
  398. [radarhere]
  399. - Added GPS TIFF tag info #6661
  400. [radarhere]
  401. - Added conversion between RGB/RGBA/RGBX and LAB #6647
  402. [radarhere]
  403. - Do not attempt normalization if mode is already normal #6644
  404. [radarhere]
  405. - Fixed seeking to an L frame in a GIF #6576
  406. [radarhere]
  407. - Consider all frames when selecting mode for PNG save_all #6610
  408. [radarhere]
  409. - Don't reassign crc on ChunkStream close #6627
  410. [wiredfool, radarhere]
  411. - Raise a warning if NumPy failed to raise an error during conversion #6594
  412. [radarhere]
  413. - Show all frames in ImageShow #6611
  414. [radarhere]
  415. - Allow FLI palette chunk to not be first #6626
  416. [radarhere]
  417. - If first GIF frame has transparency for RGB_ALWAYS loading strategy, use RGBA mode #6592
  418. [radarhere]
  419. - Round box position to integer when pasting embedded color #6517
  420. [radarhere, nulano]
  421. - Removed EXIF prefix when saving WebP #6582
  422. [radarhere]
  423. - Pad IM palette to 768 bytes when saving #6579
  424. [radarhere]
  425. - Added DDS BC6H reading #6449
  426. [ShadelessFox, REDxEYE, radarhere]
  427. - Added support for opening WhiteIsZero 16-bit integer TIFF images #6642
  428. [JayWiz, radarhere]
  429. - Raise an error when allocating translucent color to RGB palette #6654
  430. [jsbueno, radarhere]
  431. - Added reading of TIFF child images #6569
  432. [radarhere]
  433. - Improved ImageOps palette handling #6596
  434. [PososikTeam, radarhere]
  435. - Defer parsing of palette into colors #6567
  436. [radarhere]
  437. - Apply transparency to P images in ImageTk.PhotoImage #6559
  438. [radarhere]
  439. - Use rounding in ImageOps contain() and pad() #6522
  440. [bibinhashley, radarhere]
  441. - Fixed GIF remapping to palette with duplicate entries #6548
  442. [radarhere]
  443. - Allow remap_palette() to return an image with less than 256 palette entries #6543
  444. [radarhere]
  445. - Corrected BMP and TGA palette size when saving #6500
  446. [radarhere]
  447. - Do not call load() before draft() in Image.thumbnail #6539
  448. [radarhere]
  449. - Copy palette when converting from P to PA #6497
  450. [radarhere]
  451. - Allow RGB and RGBA values for PA image putpixel #6504
  452. [radarhere]
  453. - Removed support for tkinter in PyPy before Python 3.6 #6551
  454. [nulano]
  455. - Do not use CCITTFaxDecode filter if libtiff is not available #6518
  456. [radarhere]
  457. - Fallback to not using mmap if buffer is not large enough #6510
  458. [radarhere]
  459. - Fixed writing bytes as ASCII tag #6493
  460. [radarhere]
  461. - Open 1 bit EPS in mode 1 #6499
  462. [radarhere]
  463. - Removed support for tkinter before Python 1.5.2 #6549
  464. [radarhere]
  465. - Allow default ImageDraw font to be set #6484
  466. [radarhere, hugovk]
  467. - Save 1 mode PDF using CCITTFaxDecode filter #6470
  468. [radarhere]
  469. - Added support for RGBA PSD images #6481
  470. [radarhere]
  471. - Parse orientation from XMP tag contents #6463
  472. [bigcat88, radarhere]
  473. - Added support for reading ATI1/ATI2 (BC4/BC5) DDS images #6457
  474. [REDxEYE, radarhere]
  475. - Do not clear GIF tile when checking number of frames #6455
  476. [radarhere]
  477. - Support saving multiple MPO frames #6444
  478. [radarhere]
  479. - Do not double quote Pillow version for setuptools >= 60 #6450
  480. [radarhere]
  481. - Added ABGR BMP mask mode #6436
  482. [radarhere]
  483. - Fixed PSDraw rectangle #6429
  484. [radarhere]
  485. - Raise ValueError if PNG sRGB chunk is truncated #6431
  486. [radarhere]
  487. - Handle missing Python executable in ImageShow on macOS #6416
  488. [bryant1410, radarhere]
  489. 9.2.0 (2022-07-01)
  490. ------------------
  491. - Deprecate ImageFont.getsize and related functions #6381
  492. [nulano, radarhere]
  493. - Fixed null check for fribidi_version_info in FriBiDi shim #6376
  494. [nulano]
  495. - Added GIF decompression bomb check #6402
  496. [radarhere]
  497. - Handle PCF fonts files with less than 256 characters #6386
  498. [dawidcrivelli, radarhere]
  499. - Improved GIF optimize condition #6378
  500. [raygard, radarhere]
  501. - Reverted to __array_interface__ with the release of NumPy 1.23 #6394
  502. [radarhere]
  503. - Pad PCX palette to 768 bytes when saving #6391
  504. [radarhere]
  505. - Fixed bug with rounding pixels to palette colors #6377
  506. [btrekkie, radarhere]
  507. - Use gnome-screenshot on Linux if available #6361
  508. [radarhere, nulano]
  509. - Fixed loading L mode BMP RLE8 images #6384
  510. [radarhere]
  511. - Fixed incorrect operator in ImageCms error #6370
  512. [LostBenjamin, hugovk, radarhere]
  513. - Limit FPX tile size to avoid extending outside image #6368
  514. [radarhere]
  515. - Added support for decoding plain PPM formats #5242
  516. [Piolie, radarhere]
  517. - Added apply_transparency() #6352
  518. [radarhere]
  519. - Fixed behaviour change from endian fix #6197
  520. [radarhere]
  521. - Allow remapping P images with RGBA palettes #6350
  522. [radarhere]
  523. - Fixed drawing translucent 1px high polygons #6278
  524. [radarhere]
  525. - Pad COLORMAP to 768 items when saving TIFF #6232
  526. [radarhere]
  527. - Fix P -> PA conversion #6337
  528. [RedShy, radarhere]
  529. - Once exif data is parsed, do not reload unless it changes #6335
  530. [radarhere]
  531. - Only try to connect discontiguous corners at the end of edges #6303
  532. [radarhere]
  533. - Improve transparency handling when saving GIF images #6176
  534. [radarhere]
  535. - Do not update GIF frame position until local image is found #6219
  536. [radarhere]
  537. - Netscape GIF extension belongs after the global color table #6211
  538. [radarhere]
  539. - Only write GIF comments at the beginning of the file #6300
  540. [raygard, radarhere]
  541. - Separate multiple GIF comment blocks with newlines #6294
  542. [raygard, radarhere]
  543. - Always use GIF89a for comments #6292
  544. [raygard, radarhere]
  545. - Ignore compression value from BMP info dictionary when saving as TIFF #6231
  546. [radarhere]
  547. - If font is file-like object, do not re-read from object to get variant #6234
  548. [radarhere]
  549. - Raise ValueError when trying to access internal fp after close #6213
  550. [radarhere]
  551. - Support more affine expression forms in im.point() #6254
  552. [benrg, radarhere]
  553. - Populate Python palette in fromarray() #6283
  554. [radarhere]
  555. - Raise ValueError if PNG chunks are truncated #6253
  556. [radarhere]
  557. - Use durations from each frame by default when saving GIFs #6265
  558. [radarhere]
  559. - Adjust BITSPERSAMPLE to match SAMPLESPERPIXEL when opening TIFFs #6270
  560. [radarhere]
  561. - Search pkgconf system libs/cflags #6138
  562. [jameshilliard, radarhere]
  563. - Raise ValueError for invalid PPM maxval #6242
  564. [radarhere]
  565. - Corrected screencapture argument in ImageGrab.grab() #6244
  566. [axt-one]
  567. - Deprecate support for Qt 5 (PyQt5 and PySide2) #6237
  568. [hugovk, radarhere]
  569. - Increase wait time of temporary file deletion on Windows #6224
  570. [AlexTedeschi]
  571. - Deprecate FreeTypeFont.getmask2 fill parameter #6220
  572. [nulano, radarhere, hugovk]
  573. - Round lut values where necessary #6188
  574. [radarhere]
  575. - Load before getting size in resize() #6190
  576. [radarhere]
  577. - Load image before performing size calculations in thumbnail() #6186
  578. [radarhere]
  579. - Deprecated PhotoImage.paste() box parameter #6178
  580. [radarhere]
  581. 9.1.1 (2022-05-17)
  582. ------------------
  583. - When reading past the end of a TGA scan line, reduce bytes left. CVE-2022-30595
  584. [radarhere]
  585. - Do not open images with zero or negative height #6269
  586. [radarhere]
  587. 9.1.0 (2022-04-01)
  588. ------------------
  589. - Add support for multiple component transformation to JPEG2000 #5500
  590. [scaramallion, radarhere, hugovk]
  591. - Fix loading FriBiDi on Alpine #6165
  592. [nulano]
  593. - Added setting for converting GIF P frames to RGB #6150
  594. [radarhere]
  595. - Allow 1 mode images to be inverted #6034
  596. [radarhere]
  597. - Raise ValueError when trying to save empty JPEG #6159
  598. [radarhere]
  599. - Always save TIFF with contiguous planar configuration #5973
  600. [radarhere]
  601. - Connected discontiguous polygon corners #5980
  602. [radarhere]
  603. - Ensure Tkinter hook is activated for getimage() #6032
  604. [radarhere]
  605. - Use screencapture arguments to crop on macOS #6152
  606. [radarhere]
  607. - Do not mark L mode JPEG as 1 bit in PDF #6151
  608. [radarhere]
  609. - Added support for reading I;16R TIFF images #6132
  610. [radarhere]
  611. - If an error occurs after creating a file, remove the file #6134
  612. [radarhere]
  613. - Fixed calling DisplayViewer or XVViewer without a title #6136
  614. [radarhere]
  615. - Retain RGBA transparency when saving multiple GIF frames #6128
  616. [radarhere]
  617. - Save additional ICO frames with other bit depths if supplied #6122
  618. [radarhere]
  619. - Handle EXIF data truncated to just the header #6124
  620. [radarhere]
  621. - Added support for reading BMP images with RLE8 compression #6102
  622. [radarhere]
  623. - Support Python distributions where _tkinter is compiled in #6006
  624. [lukegb]
  625. - Added support for PPM arbitrary maxval #6119
  626. [radarhere]
  627. - Added BigTIFF reading #6097
  628. [radarhere]
  629. - When converting, clip I;16 to be unsigned, not signed #6112
  630. [radarhere]
  631. - Fixed loading L mode GIF with transparency #6086
  632. [radarhere]
  633. - Improved handling of PPM header #5121
  634. [Piolie, radarhere]
  635. - Reset size when seeking away from "Large Thumbnail" MPO frame #6101
  636. [radarhere]
  637. - Replace requirements.txt with extras #6072
  638. [hugovk, radarhere]
  639. - Added PyEncoder and support BLP saving #6069
  640. [radarhere]
  641. - Handle TGA images with packets that cross scan lines #6087
  642. [radarhere]
  643. - Added FITS reading #6056
  644. [radarhere, hugovk]
  645. - Added rawmode argument to Image.getpalette() #6061
  646. [radarhere]
  647. - Fixed BUFR, GRIB and HDF5 stub saving #6071
  648. [radarhere]
  649. - Do not automatically remove temporary ImageShow files on Unix #6045
  650. [radarhere]
  651. - Correctly read JPEG compressed BLP images #4685
  652. [Meithal, radarhere]
  653. - Merged _MODE_CONV typ into ImageMode as typestr #6057
  654. [radarhere]
  655. - Consider palette size when converting and in getpalette() #6060
  656. [radarhere]
  657. - Added enums #5954
  658. [radarhere]
  659. - Ensure image is opaque after converting P to PA with RGB palette #6052
  660. [radarhere]
  661. - Attach RGBA palettes from putpalette() when suitable #6054
  662. [radarhere]
  663. - Added get_photoshop_blocks() to parse Photoshop TIFF tag #6030
  664. [radarhere]
  665. - Drop excess values in BITSPERSAMPLE #6041
  666. [mikhail-iurkov]
  667. - Added unpacker from RGBA;15 to RGB #6031
  668. [radarhere]
  669. - Enable arm64 for MSVC on Windows #5811
  670. [gaborkertesz-linaro, gaborkertesz]
  671. - Keep IPython/Jupyter text/plain output stable #5891
  672. [shamrin, radarhere]
  673. - Raise an error when performing a negative crop #5972
  674. [radarhere, hugovk]
  675. - Deprecated show_file "file" argument in favour of "path" #5959
  676. [radarhere]
  677. - Fixed SPIDER images for use with Bio-formats library #5956
  678. [radarhere]
  679. - Ensure duplicated file pointer is closed #5946
  680. [radarhere]
  681. - Added specific error if path coordinate type is incorrect #5942
  682. [radarhere]
  683. - Return an empty bytestring from tobytes() for an empty image #5938
  684. [radarhere]
  685. - Remove readonly from Image.__eq__ #5930
  686. [hugovk]
  687. 9.0.1 (2022-02-03)
  688. ------------------
  689. - In show_file, use os.remove to remove temporary images. CVE-2022-24303 #6010
  690. [radarhere, hugovk]
  691. - Restrict builtins within lambdas for ImageMath.eval. CVE-2022-22817 #6009
  692. [radarhere]
  693. 9.0.0 (2022-01-02)
  694. ------------------
  695. - Restrict builtins for ImageMath.eval(). CVE-2022-22817 #5923
  696. [radarhere]
  697. - Ensure JpegImagePlugin stops at the end of a truncated file #5921
  698. [radarhere]
  699. - Fixed ImagePath.Path array handling. CVE-2022-22815, CVE-2022-22816 #5920
  700. [radarhere]
  701. - Remove consecutive duplicate tiles that only differ by their offset #5919
  702. [radarhere]
  703. - Improved I;16 operations on big endian #5901
  704. [radarhere]
  705. - Limit quantized palette to number of colors #5879
  706. [radarhere]
  707. - Fixed palette index for zeroed color in FASTOCTREE quantize #5869
  708. [radarhere]
  709. - When saving RGBA to GIF, make use of first transparent palette entry #5859
  710. [radarhere]
  711. - Pass SAMPLEFORMAT to libtiff #5848
  712. [radarhere]
  713. - Added rounding when converting P and PA #5824
  714. [radarhere]
  715. - Improved putdata() documentation and data handling #5910
  716. [radarhere]
  717. - Exclude carriage return in PDF regex to help prevent ReDoS #5912
  718. [hugovk]
  719. - Fixed freeing pointer in ImageDraw.Outline.transform #5909
  720. [radarhere]
  721. - Added ImageShow support for xdg-open #5897
  722. [m-shinder, radarhere]
  723. - Support 16-bit grayscale ImageQt conversion #5856
  724. [cmbruns, radarhere]
  725. - Convert subsequent GIF frames to RGB or RGBA #5857
  726. [radarhere]
  727. - Do not prematurely return in ImageFile when saving to stdout #5665
  728. [infmagic2047, radarhere]
  729. - Added support for top right and bottom right TGA orientations #5829
  730. [radarhere]
  731. - Corrected ICNS file length in header #5845
  732. [radarhere]
  733. - Block tile TIFF tags when saving #5839
  734. [radarhere]
  735. - Added line width argument to polygon #5694
  736. [radarhere]
  737. - Do not redeclare class each time when converting to NumPy #5844
  738. [radarhere]
  739. - Only prevent repeated polygon pixels when drawing with transparency #5835
  740. [radarhere]
  741. - Add support for pickling TrueType fonts #5826
  742. [hugovk, radarhere]
  743. - Only prefer command line tools SDK on macOS over default MacOSX SDK #5828
  744. [radarhere]
  745. - Drop support for soon-EOL Python 3.6 #5768
  746. [hugovk, nulano, radarhere]
  747. - Fix compilation on 64-bit Termux #5793
  748. [landfillbaby]
  749. - Use title for display in ImageShow #5788
  750. [radarhere]
  751. - Remove support for FreeType 2.7 and older #5777
  752. [hugovk, radarhere]
  753. - Fix for PyQt6 #5775
  754. [hugovk, radarhere]
  755. - Removed deprecated PILLOW_VERSION, Image.show command parameter, Image._showxv and ImageFile.raise_ioerror #5776
  756. [radarhere]
  757. 8.4.0 (2021-10-15)
  758. ------------------
  759. - Prefer global transparency in GIF when replacing with background color #5756
  760. [radarhere]
  761. - Added "exif" keyword argument to TIFF saving #5575
  762. [radarhere]
  763. - Copy Python palette to new image in quantize() #5696
  764. [radarhere]
  765. - Read ICO AND mask from end #5667
  766. [radarhere]
  767. - Actually check the framesize in FliDecode.c #5659
  768. [wiredfool]
  769. - Determine JPEG2000 mode purely from ihdr header box #5654
  770. [radarhere]
  771. - Fixed using info dictionary when writing multiple APNG frames #5611
  772. [radarhere]
  773. - Allow saving 1 and L mode TIFF with PhotometricInterpretation 0 #5655
  774. [radarhere]
  775. - For GIF save_all with palette, do not include palette with each frame #5603
  776. [radarhere]
  777. - Keep transparency when converting from P to LA or PA #5606
  778. [radarhere]
  779. - Copy palette to new image in transform() #5647
  780. [radarhere]
  781. - Added "transparency" argument to EpsImagePlugin load() #5620
  782. [radarhere]
  783. - Corrected pathlib.Path detection when saving #5633
  784. [radarhere]
  785. - Added WalImageFile class #5618
  786. [radarhere]
  787. - Consider I;16 pixel size when drawing text #5598
  788. [radarhere]
  789. - If default conversion from P is RGB with transparency, convert to RGBA #5594
  790. [radarhere]
  791. - Speed up rotating square images by 90 or 270 degrees #5646
  792. [radarhere]
  793. - Add support for reading DPI information from JPEG2000 images
  794. [rogermb, radarhere]
  795. - Catch TypeError from corrupted DPI value in EXIF #5639
  796. [homm, radarhere]
  797. - Do not close file pointer when saving SGI images #5645
  798. [farizrahman4u, radarhere]
  799. - Deprecate ImagePalette size parameter #5641
  800. [radarhere, hugovk]
  801. - Prefer command line tools SDK on macOS #5624
  802. [radarhere]
  803. - Added tags when saving YCbCr TIFF #5597
  804. [radarhere]
  805. - PSD layer count may be negative #5613
  806. [radarhere]
  807. - Fixed ImageOps expand with tuple border on P image #5615
  808. [radarhere]
  809. - Fixed error saving APNG with duplicate frames and different duration times #5609
  810. [thak1411, radarhere]
  811. 8.3.2 (2021-09-02)
  812. ------------------
  813. - CVE-2021-23437 Raise ValueError if color specifier is too long
  814. [hugovk, radarhere]
  815. - Fix 6-byte OOB read in FliDecode
  816. [wiredfool]
  817. - Add support for Python 3.10 #5569, #5570
  818. [hugovk, radarhere]
  819. - Ensure TIFF ``RowsPerStrip`` is multiple of 8 for JPEG compression #5588
  820. [kmilos, radarhere]
  821. - Updates for ``ImagePalette`` channel order #5599
  822. [radarhere]
  823. - Hide FriBiDi shim symbols to avoid conflict with real FriBiDi library #5651
  824. [nulano]
  825. 8.3.1 (2021-07-06)
  826. ------------------
  827. - Catch OSError when checking if fp is sys.stdout #5585
  828. [radarhere]
  829. - Handle removing orientation from alternate types of EXIF data #5584
  830. [radarhere]
  831. - Make Image.__array__ take optional dtype argument #5572
  832. [t-vi, radarhere]
  833. 8.3.0 (2021-07-01)
  834. ------------------
  835. - Use snprintf instead of sprintf. CVE-2021-34552 #5567
  836. [radarhere]
  837. - Limit TIFF strip size when saving with LibTIFF #5514
  838. [kmilos]
  839. - Allow ICNS save on all operating systems #4526
  840. [baletu, radarhere, newpanjing, hugovk]
  841. - De-zigzag JPEG's DQT when loading; deprecate convert_dict_qtables #4989
  842. [gofr, radarhere]
  843. - Replaced xml.etree.ElementTree #5565
  844. [radarhere]
  845. - Moved CVE image to pillow-depends #5561
  846. [radarhere]
  847. - Added tag data for IFD groups #5554
  848. [radarhere]
  849. - Improved ImagePalette #5552
  850. [radarhere]
  851. - Add DDS saving #5402
  852. [radarhere]
  853. - Improved getxmp() #5455
  854. [radarhere]
  855. - Convert to float for comparison with float in IFDRational __eq__ #5412
  856. [radarhere]
  857. - Allow getexif() to access TIFF tag_v2 data #5416
  858. [radarhere]
  859. - Read FITS image mode and size #5405
  860. [radarhere]
  861. - Merge parallel horizontal edges in ImagingDrawPolygon #5347
  862. [radarhere, hrdrq]
  863. - Use transparency behind first GIF frame and when disposing to background #5557
  864. [radarhere, zewt]
  865. - Avoid unstable nature of qsort in Quant.c #5367
  866. [radarhere]
  867. - Copy palette to new images in ImageOps expand #5551
  868. [radarhere]
  869. - Ensure palette string matches RGB mode #5549
  870. [radarhere]
  871. - Do not modify EXIF of original image instance in exif_transpose() #5547
  872. [radarhere]
  873. - Fixed default numresolution for small JPEG2000 images #5540
  874. [radarhere]
  875. - Added DDS BC5 reading #5501
  876. [radarhere]
  877. - Raise an error if ImageDraw.textbbox is used without a TrueType font #5510
  878. [radarhere]
  879. - Added ICO saving in BMP format #5513
  880. [radarhere]
  881. - Ensure PNG seeks to end of previous chunk at start of load_end #5493
  882. [radarhere]
  883. - Do not allow TIFF to seek to a past frame #5473
  884. [radarhere]
  885. - Avoid race condition when displaying images with eog #5507
  886. [mconst]
  887. - Added specific error messages when ink has incorrect number of bands #5504
  888. [radarhere]
  889. - Allow converting an image to a numpy array to raise errors #5379
  890. [radarhere]
  891. - Removed DPI rounding from BMP, JPEG, PNG and WMF loading #5476, #5470
  892. [radarhere]
  893. - Remove spikes when drawing thin pieslices #5460
  894. [xtsm]
  895. - Updated default value for SAMPLESPERPIXEL TIFF tag #5452
  896. [radarhere]
  897. - Removed TIFF DPI rounding #5446
  898. [radarhere, hugovk]
  899. - Include code in WebP error #5471
  900. [radarhere]
  901. - Do not alter pixels outside mask when drawing text on an image with transparency #5434
  902. [radarhere]
  903. - Reset handle when seeking backwards in TIFF #5443
  904. [radarhere]
  905. - Replace sys.stdout with sys.stdout.buffer when saving #5437
  906. [radarhere]
  907. - Fixed UNDEFINED TIFF tag of length 0 being changed in roundtrip #5426
  908. [radarhere]
  909. - Fixed bug when checking FreeType2 version if it is not installed #5445
  910. [radarhere]
  911. - Do not round dimensions when saving PDF #5459
  912. [radarhere]
  913. - Added ImageOps contain() #5417
  914. [radarhere, hugovk]
  915. - Changed WebP default "method" value to 4 #5450
  916. [radarhere]
  917. - Switched to saving 1-bit PDFs with DCTDecode #5430
  918. [radarhere]
  919. - Use bpp from ICO header #5429
  920. [radarhere]
  921. - Corrected JPEG APP14 transform value #5408
  922. [radarhere]
  923. - Changed TIFF tag 33723 length to 1 #5425
  924. [radarhere]
  925. - Changed ImageMorph incorrect mode errors to ValueError #5414
  926. [radarhere]
  927. - Add EXIF tags specified in EXIF 2.32 #5419
  928. [gladiusglad]
  929. - Treat previous contents of first GIF frame as transparent #5391
  930. [radarhere]
  931. - For special image modes, revert default resize resampling to NEAREST #5411
  932. [radarhere]
  933. - JPEG2000: Support decoding subsampled RGB and YCbCr images #4996
  934. [nulano, radarhere]
  935. - Stop decoding BC1 punchthrough alpha in BC2&3 #4144
  936. [jansol]
  937. - Use zero if GIF background color index is missing #5390
  938. [radarhere]
  939. - Fixed ensuring that GIF previous frame was loaded #5386
  940. [radarhere]
  941. - Valgrind fixes #5397
  942. [wiredfool]
  943. - Round down the radius in rounded_rectangle #5382
  944. [radarhere]
  945. - Fixed reading uncompressed RGB data from DDS #5383
  946. [radarhere]
  947. 8.2.0 (2021-04-01)
  948. ------------------
  949. - Added getxmp() method #5144
  950. [UrielMaD, radarhere]
  951. - Add ImageShow support for GraphicsMagick #5349
  952. [latosha-maltba, radarhere]
  953. - Do not load transparent pixels from subsequent GIF frames #5333
  954. [zewt, radarhere]
  955. - Use LZW encoding when saving GIF images #5291
  956. [raygard]
  957. - Set all transparent colors to be equal in quantize() #5282
  958. [radarhere]
  959. - Allow PixelAccess to use Python __int__ when parsing x and y #5206
  960. [radarhere]
  961. - Removed Image._MODEINFO #5316
  962. [radarhere]
  963. - Add preserve_tone option to autocontrast #5350
  964. [elejke, radarhere]
  965. - Fixed linear_gradient and radial_gradient I and F modes #5274
  966. [radarhere]
  967. - Add support for reading TIFFs with PlanarConfiguration=2 #5364
  968. [kkopachev, wiredfool, nulano]
  969. - Deprecated categories #5351
  970. [radarhere]
  971. - Do not premultiply alpha when resizing with Image.NEAREST resampling #5304
  972. [nulano]
  973. - Dynamically link FriBiDi instead of Raqm #5062
  974. [nulano]
  975. - Allow fewer PNG palette entries than the bit depth maximum when saving #5330
  976. [radarhere]
  977. - Use duration from info dictionary when saving WebP #5338
  978. [radarhere]
  979. - Stop flattening EXIF IFD into getexif() #4947
  980. [radarhere, kkopachev]
  981. - Replaced tiff_deflate with tiff_adobe_deflate compression when saving TIFF images #5343
  982. [radarhere]
  983. - Save ICC profile from TIFF encoderinfo #5321
  984. [radarhere]
  985. - Moved RGB fix inside ImageQt class #5268
  986. [radarhere]
  987. - Allow alpha_composite destination to be negative #5313
  988. [radarhere]
  989. - Ensure file is closed if it is opened by ImageQt.ImageQt #5260
  990. [radarhere]
  991. - Added ImageDraw rounded_rectangle method #5208
  992. [radarhere]
  993. - Added IPythonViewer #5289
  994. [radarhere, Kipkurui-mutai]
  995. - Only draw each rectangle outline pixel once #5183
  996. [radarhere]
  997. - Use mmap instead of built-in Win32 mapper #5224
  998. [radarhere, cgohlke]
  999. - Handle PCX images with an odd stride #5214
  1000. [radarhere]
  1001. - Only read different sizes for "Large Thumbnail" MPO frames #5168
  1002. [radarhere]
  1003. - Added PyQt6 support #5258
  1004. [radarhere]
  1005. - Changed Image.open formats parameter to be case-insensitive #5250
  1006. [Piolie, radarhere]
  1007. - Deprecate Tk/Tcl 8.4, to be removed in Pillow 10 (2023-07-01) #5216
  1008. [radarhere]
  1009. - Added tk version to pilinfo #5226
  1010. [radarhere, nulano]
  1011. - Support for ignoring tests when running valgrind #5150
  1012. [wiredfool, radarhere, hugovk]
  1013. - OSS-Fuzz support #5189
  1014. [wiredfool, radarhere]
  1015. 8.1.2 (2021-03-06)
  1016. ------------------
  1017. - Fix Memory DOS in BLP (CVE-2021-27921), ICNS (CVE-2021-27922) and ICO (CVE-2021-27923) Image Plugins
  1018. [wiredfool]
  1019. 8.1.1 (2021-03-01)
  1020. ------------------
  1021. - Use more specific regex chars to prevent ReDoS. CVE-2021-25292
  1022. [hugovk]
  1023. - Fix OOB Read in TiffDecode.c, and check the tile validity before reading. CVE-2021-25291
  1024. [wiredfool]
  1025. - Fix negative size read in TiffDecode.c. CVE-2021-25290
  1026. [wiredfool]
  1027. - Fix OOB read in SgiRleDecode.c. CVE-2021-25293
  1028. [wiredfool]
  1029. - Incorrect error code checking in TiffDecode.c. CVE-2021-25289
  1030. [wiredfool]
  1031. - PyModule_AddObject fix for Python 3.10 #5194
  1032. [radarhere]
  1033. 8.1.0 (2021-01-02)
  1034. ------------------
  1035. - Fix TIFF OOB Write error. CVE-2020-35654 #5175
  1036. [wiredfool]
  1037. - Fix for Read Overflow in PCX Decoding. CVE-2020-35653 #5174
  1038. [wiredfool, radarhere]
  1039. - Fix for SGI Decode buffer overrun. CVE-2020-35655 #5173
  1040. [wiredfool, radarhere]
  1041. - Fix OOB Read when saving GIF of xsize=1 #5149
  1042. [wiredfool]
  1043. - Makefile updates #5159
  1044. [wiredfool, radarhere]
  1045. - Add support for PySide6 #5161
  1046. [hugovk]
  1047. - Use disposal settings from previous frame in APNG #5126
  1048. [radarhere]
  1049. - Added exception explaining that _repr_png_ saves to PNG #5139
  1050. [radarhere]
  1051. - Use previous disposal method in GIF load_end #5125
  1052. [radarhere]
  1053. - Allow putpalette to accept 1024 integers to include alpha values #5089
  1054. [radarhere]
  1055. - Fix OOB Read when writing TIFF with custom Metadata #5148
  1056. [wiredfool]
  1057. - Added append_images support for ICO #4568
  1058. [ziplantil, radarhere]
  1059. - Block TIFFTAG_SUBIFD #5120
  1060. [radarhere]
  1061. - Fixed dereferencing potential null pointers #5108, #5111
  1062. [cgohlke, radarhere]
  1063. - Deprecate FreeType 2.7 #5098
  1064. [hugovk, radarhere]
  1065. - Moved warning to end of execution #4965
  1066. [radarhere]
  1067. - Removed unused fromstring and tostring C methods #5026
  1068. [radarhere]
  1069. - init() if one of the formats is unrecognised #5037
  1070. [radarhere]
  1071. - Moved string_dimension CVE image to pillow-depends #4993
  1072. [radarhere]
  1073. - Support raw rgba8888 for DDS #4760
  1074. [qiankanglai]
  1075. 8.0.1 (2020-10-22)
  1076. ------------------
  1077. - Update FreeType used in binary wheels to 2.10.4 to fix CVE-2020-15999.
  1078. [radarhere]
  1079. - Moved string_dimension image to pillow-depends #4993
  1080. [radarhere]
  1081. 8.0.0 (2020-10-15)
  1082. ------------------
  1083. - Drop support for EOL Python 3.5 #4746, #4794
  1084. [hugovk, radarhere, nulano]
  1085. - Drop support for PyPy3 < 7.2.0 #4964
  1086. [nulano]
  1087. - Remove ImageCms.CmsProfile attributes deprecated since 3.2.0 #4768
  1088. [hugovk, radarhere]
  1089. - Remove long-deprecated Image.py functions #4798
  1090. [hugovk, nulano, radarhere]
  1091. - Add support for 16-bit precision JPEG quantization values #4918
  1092. [gofr]
  1093. - Added reading of IFD tag type #4979
  1094. [radarhere]
  1095. - Initialize offset memory for PyImagingPhotoPut #4806
  1096. [nqbit]
  1097. - Fix TiffDecode comparison warnings #4756
  1098. [nulano]
  1099. - Docs: Add dark mode #4968
  1100. [hugovk, nulano]
  1101. - Added macOS SDK install path to library and include directories #4974
  1102. [radarhere, fxcoudert]
  1103. - Imaging.h: prevent confusion with system #4923
  1104. [ax3l, ,radarhere]
  1105. - Avoid using pkg_resources in PIL.features.pilinfo #4975
  1106. [nulano]
  1107. - Add getlength and getbbox functions for TrueType fonts #4959
  1108. [nulano, radarhere, hugovk]
  1109. - Allow tuples with one item to give single color value in getink #4927
  1110. [radarhere, nulano]
  1111. - Add support for CBDT and COLR fonts #4955
  1112. [nulano, hugovk]
  1113. - Removed OSError in favour of DecompressionBombError for BMP #4966
  1114. [radarhere]
  1115. - Implemented another ellipse drawing algorithm #4523
  1116. [xtsm, radarhere]
  1117. - Removed unused JpegImagePlugin._fixup_dict function #4957
  1118. [radarhere]
  1119. - Added reading and writing of private PNG chunks #4292
  1120. [radarhere]
  1121. - Implement anchor for TrueType fonts #4930
  1122. [nulano, hugovk]
  1123. - Fixed bug in Exif __delitem__ #4942
  1124. [radarhere]
  1125. - Fix crash in ImageTk.PhotoImage on MinGW 64-bit #4946
  1126. [nulano]
  1127. - Moved CVE images to pillow-depends #4929
  1128. [radarhere]
  1129. - Refactor font_getsize and font_render #4910
  1130. [nulano]
  1131. - Fixed loading profile with non-ASCII path on Windows #4914
  1132. [radarhere]
  1133. - Fixed effect_spread bug for zero distance #4908
  1134. [radarhere, hugovk]
  1135. - Added formats parameter to Image.open #4837
  1136. [nulano, radarhere]
  1137. - Added regular_polygon draw method #4846
  1138. [comhar]
  1139. - Raise proper TypeError in putpixel #4882
  1140. [nulano, hugovk]
  1141. - Added writing of subIFDs #4862
  1142. [radarhere]
  1143. - Fix IFDRational __eq__ bug #4888
  1144. [luphord, radarhere]
  1145. - Fixed duplicate variable name #4885
  1146. [liZe, radarhere]
  1147. - Added homebrew zlib include directory #4842
  1148. [radarhere]
  1149. - Corrected inverted PDF CMYK colors #4866
  1150. [radarhere]
  1151. - Do not try to close file pointer if file pointer is empty #4823
  1152. [radarhere]
  1153. - ImageOps.autocontrast: add mask parameter #4843
  1154. [navneeth, hugovk]
  1155. - Read EXIF data tEXt chunk into info as bytes instead of string #4828
  1156. [radarhere]
  1157. - Replaced distutils with setuptools #4797, #4809, #4814, #4817, #4829, #4890
  1158. [hugovk, radarhere]
  1159. - Add MIME type to PsdImagePlugin #4788
  1160. [samamorgan]
  1161. - Allow ImageOps.autocontrast to specify low and high cutoffs separately #4749
  1162. [millionhz, radarhere]
  1163. 7.2.0 (2020-07-01)
  1164. ------------------
  1165. - Do not convert I;16 images when showing PNGs #4744
  1166. [radarhere]
  1167. - Fixed ICNS file pointer saving #4741
  1168. [radarhere]
  1169. - Fixed loading non-RGBA mode APNGs with dispose background #4742
  1170. [radarhere]
  1171. - Deprecated _showxv #4714
  1172. [radarhere]
  1173. - Deprecate Image.show(command="...") #4646
  1174. [nulano, hugovk, radarhere]
  1175. - Updated JPEG magic number #4707
  1176. [Cykooz, radarhere]
  1177. - Change STRIPBYTECOUNTS to LONG if necessary when saving #4626
  1178. [radarhere, hugovk]
  1179. - Write JFIF header when saving JPEG #4639
  1180. [radarhere]
  1181. - Replaced tiff_jpeg with jpeg compression when saving TIFF images #4627
  1182. [radarhere]
  1183. - Writing TIFF tags: improved BYTE, added UNDEFINED #4605
  1184. [radarhere]
  1185. - Consider transparency when pasting text on an RGBA image #4566
  1186. [radarhere]
  1187. - Added method argument to single frame WebP saving #4547
  1188. [radarhere]
  1189. - Use ImageFileDirectory_v2 in Image.Exif #4637
  1190. [radarhere]
  1191. - Corrected reading EXIF metadata without prefix #4677
  1192. [radarhere]
  1193. - Fixed drawing a jointed line with a sequence of numeric values #4580
  1194. [radarhere]
  1195. - Added support for 1-D NumPy arrays #4608
  1196. [radarhere]
  1197. - Parse orientation from XMP tags #4560
  1198. [radarhere]
  1199. - Speed up text layout by not rendering glyphs #4652
  1200. [nulano]
  1201. - Fixed ZeroDivisionError in Image.thumbnail #4625
  1202. [radarhere]
  1203. - Replaced TiffImagePlugin DEBUG with logging #4550
  1204. [radarhere]
  1205. - Fix repeatedly loading .gbr #4620
  1206. [ElinksFr, radarhere]
  1207. - JPEG: Truncate icclist instead of setting to None #4613
  1208. [homm]
  1209. - Fixes default offset for Exif #4594
  1210. [rodrigob, radarhere]
  1211. - Fixed bug when unpickling TIFF images #4565
  1212. [radarhere]
  1213. - Fix pickling WebP #4561
  1214. [hugovk, radarhere]
  1215. - Replace IOError and WindowsError aliases with OSError #4536
  1216. [hugovk, radarhere]
  1217. 7.1.2 (2020-04-25)
  1218. ------------------
  1219. - Raise an EOFError when seeking too far in PNG #4528
  1220. [radarhere]
  1221. 7.1.1 (2020-04-02)
  1222. ------------------
  1223. - Fix regression seeking and telling PNGs #4512 #4514
  1224. [hugovk, radarhere]
  1225. 7.1.0 (2020-04-01)
  1226. ------------------
  1227. - Fix multiple OOB reads in FLI decoding #4503
  1228. [wiredfool]
  1229. - Fix buffer overflow in SGI-RLE decoding #4504
  1230. [wiredfool, hugovk]
  1231. - Fix bounds overflow in JPEG 2000 decoding #4505
  1232. [wiredfool]
  1233. - Fix bounds overflow in PCX decoding #4506
  1234. [wiredfool]
  1235. - Fix 2 buffer overflows in TIFF decoding #4507
  1236. [wiredfool]
  1237. - Add APNG support #4243
  1238. [pmrowla, radarhere, hugovk]
  1239. - ImageGrab.grab() for Linux with XCB #4260
  1240. [nulano, radarhere]
  1241. - Added three new channel operations #4230
  1242. [dwastberg, radarhere]
  1243. - Prevent masking of Image reduce method in Jpeg2KImagePlugin #4474
  1244. [radarhere, homm]
  1245. - Added reading of earlier ImageMagick PNG EXIF data #4471
  1246. [radarhere]
  1247. - Fixed endian handling for I;16 getextrema #4457
  1248. [radarhere]
  1249. - Release buffer if function returns prematurely #4381
  1250. [radarhere]
  1251. - Add JPEG comment to info dictionary #4455
  1252. [radarhere]
  1253. - Fix size calculation of Image.thumbnail() #4404
  1254. [orlnub123]
  1255. - Fixed stroke on FreeType < 2.9 #4401
  1256. [radarhere]
  1257. - If present, only use alpha channel for bounding box #4454
  1258. [radarhere]
  1259. - Warn if an unknown feature is passed to features.check() #4438
  1260. [jdufresne]
  1261. - Fix Name field length when saving IM images #4424
  1262. [hugovk, radarhere]
  1263. - Allow saving of zero quality JPEG images #4440
  1264. [radarhere]
  1265. - Allow explicit zero width to hide outline #4334
  1266. [radarhere]
  1267. - Change ContainerIO return type to match file object mode #4297
  1268. [jdufresne, radarhere]
  1269. - Only draw each polygon pixel once #4333
  1270. [radarhere]
  1271. - Add support for shooting situation Exif IFD tags #4398
  1272. [alexagv]
  1273. - Handle multiple and malformed JPEG APP13 markers #4370
  1274. [homm]
  1275. - Depends: Update libwebp to 1.1.0 #4342, libjpeg to 9d #4352
  1276. [radarhere]
  1277. 7.0.0 (2020-01-02)
  1278. ------------------
  1279. - Drop support for EOL Python 2.7 #4109
  1280. [hugovk, radarhere, jdufresne]
  1281. - Fix rounding error on RGB to L conversion #4320
  1282. [homm]
  1283. - Exif writing fixes: Rational boundaries and signed/unsigned types #3980
  1284. [kkopachev, radarhere]
  1285. - Allow loading of WMF images at a given DPI #4311
  1286. [radarhere]
  1287. - Added reduce operation #4251
  1288. [homm]
  1289. - Raise ValueError for io.StringIO in Image.open #4302
  1290. [radarhere, hugovk]
  1291. - Fix thumbnail geometry when DCT scaling is used #4231
  1292. [homm, radarhere]
  1293. - Use default DPI when exif provides invalid x_resolution #4147
  1294. [beipang2, radarhere]
  1295. - Change default resize resampling filter from NEAREST to BICUBIC #4255
  1296. [homm]
  1297. - Fixed black lines on upscaled images with the BOX filter #4278
  1298. [homm]
  1299. - Better thumbnail aspect ratio preservation #4256
  1300. [homm]
  1301. - Add La mode packing and unpacking #4248
  1302. [homm]
  1303. - Include tests in coverage reports #4173
  1304. [hugovk]
  1305. - Handle broken Photoshop data #4239
  1306. [radarhere]
  1307. - Raise a specific exception if no data is found for an MPO frame #4240
  1308. [radarhere]
  1309. - Fix Unicode support for PyPy #4145
  1310. [nulano]
  1311. - Added UnidentifiedImageError #4182
  1312. [radarhere, hugovk]
  1313. - Remove deprecated __version__ from plugins #4197
  1314. [hugovk, radarhere]
  1315. - Fixed freeing unallocated pointer when resizing with height too large #4116
  1316. [radarhere]
  1317. - Copy info in Image.transform #4128
  1318. [radarhere]
  1319. - Corrected DdsImagePlugin setting info gamma #4171
  1320. [radarhere]
  1321. - Depends: Update libtiff to 4.1.0 #4195, Tk Tcl to 8.6.10 #4229, libimagequant to 2.12.6 #4318
  1322. [radarhere]
  1323. - Improve handling of file resources #3577
  1324. [jdufresne]
  1325. - Removed CI testing of Fedora 29 #4165
  1326. [hugovk]
  1327. - Added pypy3 to tox envlist #4137
  1328. [jdufresne]
  1329. - Drop support for EOL PyQt4 and PySide #4108
  1330. [hugovk, radarhere]
  1331. - Removed deprecated setting of TIFF image sizes #4114
  1332. [radarhere]
  1333. - Removed deprecated PILLOW_VERSION #4107
  1334. [hugovk]
  1335. - Changed default frombuffer raw decoder args #1730
  1336. [radarhere]
  1337. 6.2.2 (2020-01-02)
  1338. ------------------
  1339. - This is the last Pillow release to support Python 2.7 #3642
  1340. - Overflow checks for realloc for tiff decoding. CVE-2020-5310
  1341. [wiredfool, radarhere]
  1342. - Catch SGI buffer overrun. CVE-2020-5311
  1343. [radarhere]
  1344. - Catch PCX P mode buffer overrun. CVE-2020-5312
  1345. [radarhere]
  1346. - Catch FLI buffer overrun. CVE-2020-5313
  1347. [radarhere]
  1348. - Raise an error for an invalid number of bands in FPX image. CVE-2019-19911
  1349. [wiredfool, radarhere]
  1350. 6.2.1 (2019-10-21)
  1351. ------------------
  1352. - Add support for Python 3.8 #4141
  1353. [hugovk]
  1354. 6.2.0 (2019-10-01)
  1355. ------------------
  1356. - Catch buffer overruns #4104
  1357. [radarhere]
  1358. - Initialize rows_per_strip when RowsPerStrip tag is missing #4034
  1359. [cgohlke, radarhere]
  1360. - Raise error if TIFF dimension is a string #4103
  1361. [radarhere]
  1362. - Added decompression bomb checks #4102
  1363. [radarhere]
  1364. - Fix ImageGrab.grab DPI scaling on Windows 10 version 1607+ #4000
  1365. [nulano, radarhere]
  1366. - Corrected negative seeks #4101
  1367. [radarhere]
  1368. - Added argument to capture all screens on Windows #3950
  1369. [nulano, radarhere]
  1370. - Updated warning to specify when Image.frombuffer defaults will change #4086
  1371. [radarhere]
  1372. - Changed WindowsViewer format to PNG #4080
  1373. [radarhere]
  1374. - Use TIFF orientation #4063
  1375. [radarhere]
  1376. - Raise the same error if a truncated image is loaded a second time #3965
  1377. [radarhere]
  1378. - Lazily use ImageFileDirectory_v1 values from Exif #4031
  1379. [radarhere]
  1380. - Improved HSV conversion #4004
  1381. [radarhere]
  1382. - Added text stroking #3978
  1383. [radarhere, hugovk]
  1384. - No more deprecated bdist_wininst .exe installers #4029
  1385. [hugovk]
  1386. - Do not allow floodfill to extend into negative coordinates #4017
  1387. [radarhere]
  1388. - Fixed arc drawing bug for a non-whole number of degrees #4014
  1389. [radarhere]
  1390. - Fix bug when merging identical images to GIF with a list of durations #4003
  1391. [djy0, radarhere]
  1392. - Fix bug in TIFF loading of BufferedReader #3998
  1393. [chadawagner]
  1394. - Added fallback for finding ld on MinGW Cygwin #4019
  1395. [radarhere]
  1396. - Remove indirect dependencies from requirements.txt #3976
  1397. [hugovk]
  1398. - Depends: Update libwebp to 1.0.3 #3983, libimagequant to 2.12.5 #3993, freetype to 2.10.1 #3991
  1399. [radarhere]
  1400. - Change overflow check to use PY_SSIZE_T_MAX #3964
  1401. [radarhere]
  1402. - Report reason for pytest skips #3942
  1403. [hugovk]
  1404. 6.1.0 (2019-07-01)
  1405. ------------------
  1406. - Deprecate Image.__del__ #3929
  1407. [jdufresne]
  1408. - Tiff: Add support for JPEG quality #3886
  1409. [olt]
  1410. - Respect the PKG_CONFIG environment variable when building #3928
  1411. [chewi]
  1412. - Use explicit memcpy() to avoid unaligned memory accesses #3225
  1413. [DerDakon]
  1414. - Improve encoding of TIFF tags #3861
  1415. [olt]
  1416. - Update Py_UNICODE to Py_UCS4 #3780
  1417. [nulano]
  1418. - Consider I;16 pixel size when drawing #3899
  1419. [radarhere]
  1420. - Add TIFFTAG_SAMPLEFORMAT to blocklist #3926
  1421. [cgohlke, radarhere]
  1422. - Create GIF deltas from background colour of GIF frames if disposal mode is 2 #3708
  1423. [sircinnamon, radarhere]
  1424. - Added ImageSequence all_frames #3778
  1425. [radarhere]
  1426. - Use unsigned int to store TIFF IFD offsets #3923
  1427. [cgohlke]
  1428. - Include CPPFLAGS when searching for libraries #3819
  1429. [jefferyto]
  1430. - Updated TIFF tile descriptors to match current decoding functionality #3795
  1431. [dmnisson]
  1432. - Added an ``image.entropy()`` method (second revision) #3608
  1433. [fish2000]
  1434. - Pass the correct types to PyArg_ParseTuple #3880
  1435. [QuLogic]
  1436. - Fixed crash when loading non-font bytes #3912
  1437. [radarhere]
  1438. - Fix SPARC memory alignment issues in Pack/Unpack functions #3858
  1439. [kulikjak]
  1440. - Added CMYK;16B and CMYK;16N unpackers #3913
  1441. [radarhere]
  1442. - Fixed bugs in calculating text size #3864
  1443. [radarhere]
  1444. - Add __main__.py to output basic format and support information #3870
  1445. [jdufresne]
  1446. - Added variation font support #3802
  1447. [radarhere]
  1448. - Do not down-convert if image is LA when showing with PNG format #3869
  1449. [radarhere]
  1450. - Improve handling of PSD frames #3759
  1451. [radarhere]
  1452. - Improved ICO and ICNS loading #3897
  1453. [radarhere]
  1454. - Changed Preview application path so that it is no longer static #3896
  1455. [radarhere]
  1456. - Corrected ttb text positioning #3856
  1457. [radarhere]
  1458. - Handle unexpected ICO image sizes #3836
  1459. [radarhere]
  1460. - Fixed bits value for RGB;16N unpackers #3837
  1461. [kkopachev]
  1462. - Travis CI: Add Fedora 30, remove Fedora 28 #3821
  1463. [hugovk]
  1464. - Added reading of CMYK;16L TIFF images #3817
  1465. [radarhere]
  1466. - Fixed dimensions of 1-bit PDFs #3827
  1467. [radarhere]
  1468. - Fixed opening mmap image through Path on Windows #3825
  1469. [radarhere]
  1470. - Fixed ImageDraw arc gaps #3824
  1471. [radarhere]
  1472. - Expand GIF to include frames with extents outside the image size #3822
  1473. [radarhere]
  1474. - Fixed ImageTk getimage #3814
  1475. [radarhere]
  1476. - Fixed bug in decoding large images #3791
  1477. [radarhere]
  1478. - Fixed reading APP13 marker without Photoshop data #3771
  1479. [radarhere]
  1480. - Added option to include layered windows in ImageGrab.grab on Windows #3808
  1481. [radarhere]
  1482. - Detect libimagequant when installed by pacman on MingW #3812
  1483. [radarhere]
  1484. - Fixed raqm layout bug #3787
  1485. [radarhere]
  1486. - Fixed loading font with non-Unicode path on Windows #3785
  1487. [radarhere]
  1488. - Travis CI: Upgrade PyPy from 6.0.0 to 7.1.1 #3783
  1489. [hugovk, johnthagen]
  1490. - Depends: Updated openjpeg to 2.3.1 #3794, raqm to 0.7.0 #3877, libimagequant to 2.12.3 #3889
  1491. [radarhere]
  1492. - Fix numpy bool bug #3790
  1493. [radarhere]
  1494. 6.0.0 (2019-04-01)
  1495. ------------------
  1496. - Python 2.7 support will be removed in Pillow 7.0.0 #3682
  1497. [hugovk]
  1498. - Add EXIF class #3625
  1499. [radarhere]
  1500. - Add ImageOps exif_transpose method #3687
  1501. [radarhere]
  1502. - Added warnings to deprecated CMSProfile attributes #3615
  1503. [hugovk]
  1504. - Documented reading TIFF multiframe images #3720
  1505. [akuchling]
  1506. - Improved speed of opening an MPO file #3658
  1507. [Glandos]
  1508. - Update palette in quantize #3721
  1509. [radarhere]
  1510. - Improvements to TIFF is_animated and n_frames #3714
  1511. [radarhere]
  1512. - Fixed incompatible pointer type warnings #3754
  1513. [radarhere]
  1514. - Improvements to PA and LA conversion and palette operations #3728
  1515. [radarhere]
  1516. - Consistent DPI rounding #3709
  1517. [radarhere]
  1518. - Change size of MPO image to match frame #3588
  1519. [radarhere]
  1520. - Read Photoshop resolution data #3701
  1521. [radarhere]
  1522. - Ensure image is mutable before saving #3724
  1523. [radarhere]
  1524. - Correct remap_palette documentation #3740
  1525. [radarhere]
  1526. - Promote P images to PA in putalpha #3726
  1527. [radarhere]
  1528. - Allow RGB and RGBA values for new P images #3719
  1529. [radarhere]
  1530. - Fixed TIFF bug when seeking backwards and then forwards #3713
  1531. [radarhere]
  1532. - Cache EXIF information #3498
  1533. [Glandos]
  1534. - Added transparency for all PNG grayscale modes #3744
  1535. [radarhere]
  1536. - Fix deprecation warnings in Python 3.8 #3749
  1537. [radarhere]
  1538. - Fixed GIF bug when rewinding to a non-zero frame #3716
  1539. [radarhere]
  1540. - Only close original fp in __del__ and __exit__ if original fp is exclusive #3683
  1541. [radarhere]
  1542. - Fix BytesWarning in Tests/test_numpy.py #3725
  1543. [jdufresne]
  1544. - Add missing MIME types and extensions #3520
  1545. [pirate486743186]
  1546. - Add I;16 PNG save #3566
  1547. [radarhere]
  1548. - Add support for BMP RGBA bitfield compression #3705
  1549. [radarhere]
  1550. - Added ability to set language for text rendering #3693
  1551. [iwsfutcmd]
  1552. - Only close exclusive fp on Image __exit__ #3698
  1553. [radarhere]
  1554. - Changed EPS subprocess stdout from devnull to None #3635
  1555. [radarhere]
  1556. - Add reading old-JPEG compressed TIFFs #3489
  1557. [kkopachev]
  1558. - Add EXIF support for PNG #3674
  1559. [radarhere]
  1560. - Add option to set dither param on quantize #3699
  1561. [glasnt]
  1562. - Add reading of DDS uncompressed RGB data #3673
  1563. [radarhere]
  1564. - Correct length of Tiff BYTE tags #3672
  1565. [radarhere]
  1566. - Add DIB saving and loading through Image open #3691
  1567. [radarhere]
  1568. - Removed deprecated VERSION #3624
  1569. [hugovk]
  1570. - Fix 'BytesWarning: Comparison between bytes and string' in PdfDict #3580
  1571. [jdufresne]
  1572. - Do not resize in Image.thumbnail if already the destination size #3632
  1573. [radarhere]
  1574. - Replace .seek() magic numbers with io.SEEK_* constants #3572
  1575. [jdufresne]
  1576. - Make ContainerIO.isatty() return a bool, not int #3568
  1577. [jdufresne]
  1578. - Add support to all transpose operations for I;16 modes #3563, #3741
  1579. [radarhere]
  1580. - Deprecate support for PyQt4 and PySide #3655
  1581. [hugovk, radarhere]
  1582. - Add TIFF compression codecs: LZMA, Zstd, WebP #3555
  1583. [cgohlke]
  1584. - Fixed pickling of iTXt class with protocol > 1 #3537
  1585. [radarhere]
  1586. - _util.isPath returns True for pathlib.Path objects #3616
  1587. [wbadart]
  1588. - Remove unnecessary unittest.main() boilerplate from test files #3631
  1589. [jdufresne]
  1590. - Exif: Seek to IFD offset #3584
  1591. [radarhere]
  1592. - Deprecate PIL.*ImagePlugin.__version__ attributes #3628
  1593. [jdufresne]
  1594. - Docs: Add note about ImageDraw operations that exceed image bounds #3620
  1595. [radarhere]
  1596. - Allow for unknown PNG chunks after image data #3558
  1597. [radarhere]
  1598. - Changed EPS subprocess stdin from devnull to None #3611
  1599. [radarhere]
  1600. - Fix possible integer overflow #3609
  1601. [cgohlke]
  1602. - Catch BaseException for resource cleanup handlers #3574
  1603. [jdufresne]
  1604. - Improve pytest configuration to allow specific tests as CLI args #3579
  1605. [jdufresne]
  1606. - Drop support for Python 3.4 #3596
  1607. [hugovk]
  1608. - Remove deprecated PIL.OleFileIO #3598
  1609. [hugovk]
  1610. - Remove deprecated ImageOps undocumented functions #3599
  1611. [hugovk]
  1612. - Depends: Update libwebp to 1.0.2 #3602
  1613. [radarhere]
  1614. - Detect MIME types #3525
  1615. [radarhere]
  1616. 5.4.1 (2019-01-06)
  1617. ------------------
  1618. - File closing: Only close __fp if not fp #3540
  1619. [radarhere]
  1620. - Fix build for Termux #3529
  1621. [pslacerda]
  1622. - PNG: Detect MIME types #3525
  1623. [radarhere]
  1624. - PNG: Handle IDAT chunks after image end #3532
  1625. [radarhere]
  1626. 5.4.0 (2019-01-01)
  1627. ------------------
  1628. - Docs: Improved ImageChops documentation #3522
  1629. [radarhere]
  1630. - Allow RGB and RGBA values for P image putpixel #3519
  1631. [radarhere]
  1632. - Add APNG extension to PNG plugin #3501
  1633. [pirate486743186, radarhere]
  1634. - Lookup ld.so.cache instead of hardcoding search paths #3245
  1635. [pslacerda]
  1636. - Added custom string TIFF tags #3513
  1637. [radarhere]
  1638. - Improve setup.py configuration #3395
  1639. [diorcety]
  1640. - Read textual chunks located after IDAT chunks for PNG #3506
  1641. [radarhere]
  1642. - Performance: Don't try to hash value if enum is empty #3503
  1643. [Glandos]
  1644. - Added custom int and float TIFF tags #3350
  1645. [radarhere]
  1646. - Fixes for issues reported by static code analysis #3393
  1647. [frenzymadness]
  1648. - GIF: Wait until mode is normalized to copy im.info into encoderinfo #3187
  1649. [radarhere]
  1650. - Docs: Add page of deprecations and removals #3486
  1651. [hugovk]
  1652. - Travis CI: Upgrade PyPy from 5.8.0 to 6.0 #3488
  1653. [hugovk]
  1654. - Travis CI: Allow lint job to fail #3467
  1655. [hugovk]
  1656. - Resolve __fp when closing and deleting #3261
  1657. [radarhere]
  1658. - Close exclusive fp before discarding #3461
  1659. [radarhere]
  1660. - Updated open files documentation #3490
  1661. [radarhere]
  1662. - Added libjpeg_turbo to check_feature #3493
  1663. [radarhere]
  1664. - Change color table index background to tuple when saving as WebP #3471
  1665. [radarhere]
  1666. - Allow arbitrary number of comment extension subblocks #3479
  1667. [radarhere]
  1668. - Ensure previous FLI frame is loaded before seeking to the next #3478
  1669. [radarhere]
  1670. - ImageShow improvements #3450
  1671. [radarhere]
  1672. - Depends: Update libimagequant to 2.12.2 #3442, libtiff to 4.0.10 #3458, libwebp to 1.0.1 #3468, Tk Tcl to 8.6.9 #3465
  1673. [radarhere]
  1674. - Check quality_layers type #3464
  1675. [radarhere]
  1676. - Add context manager, __del__ and close methods to TarIO #3455
  1677. [radarhere]
  1678. - Test: Do not play sound when running screencapture command #3454
  1679. [radarhere]
  1680. - Close exclusive fp on open exception #3456
  1681. [radarhere]
  1682. - Only close existing fp in WebP if fp is exclusive #3418
  1683. [radarhere]
  1684. - Docs: Re-add the downloads badge #3443
  1685. [hugovk]
  1686. - Added negative index to PixelAccess #3406
  1687. [Nazime]
  1688. - Change tuple background to global color table index when saving as GIF #3385
  1689. [radarhere]
  1690. - Test: Improved ImageGrab tests #3424
  1691. [radarhere]
  1692. - Flake8 fixes #3422, #3440
  1693. [radarhere, hugovk]
  1694. - Only ask for YCbCr->RGB libtiff conversion for jpeg-compressed tiffs #3417
  1695. [kkopachev]
  1696. - Optimise ImageOps.fit by combining resize and crop #3409
  1697. [homm]
  1698. 5.3.0 (2018-10-01)
  1699. ------------------
  1700. - Changed Image size property to be read-only by default #3203
  1701. [radarhere]
  1702. - Add warnings if image file identification fails due to lack of WebP support #3169
  1703. [radarhere, hugovk]
  1704. - Hide the Ghostscript progress dialog popup on Windows #3378
  1705. [hugovk]
  1706. - Adding support to reading tiled and YcbCr jpeg tiffs through libtiff #3227
  1707. [kkopachev]
  1708. - Fixed None as TIFF compression argument #3310
  1709. [radarhere]
  1710. - Changed GIF seek to remove previous info items #3324
  1711. [radarhere]
  1712. - Improved PDF document info #3274
  1713. [radarhere]
  1714. - Add line width parameter to rectangle and ellipse-based shapes #3094
  1715. [hugovk, radarhere]
  1716. - Fixed decompression bomb check in _crop #3313
  1717. [dinkolubina, hugovk]
  1718. - Added support to ImageDraw.floodfill for non-RGB colors #3377
  1719. [radarhere]
  1720. - Tests: Avoid catching unexpected exceptions in tests #2203
  1721. [jdufresne]
  1722. - Use TextIOWrapper.detach() instead of NoCloseStream #2214
  1723. [jdufresne]
  1724. - Added transparency to matrix conversion #3205
  1725. [radarhere]
  1726. - Added ImageOps pad method #3364
  1727. [radarhere]
  1728. - Give correct extrema for I;16 format images #3359
  1729. [bz2]
  1730. - Added PySide2 #3279
  1731. [radarhere]
  1732. - Corrected TIFF tags #3369
  1733. [radarhere]
  1734. - CI: Install CFFI and pycparser without any PYTHONOPTIMIZE #3374
  1735. [hugovk]
  1736. - Read/Save RGB webp as RGB (instead of RGBX) #3298
  1737. [kkopachev]
  1738. - ImageDraw: Add line joints #3250
  1739. [radarhere]
  1740. - Improved performance of ImageDraw floodfill method #3294
  1741. [yo1995]
  1742. - Fix builds with --parallel #3272
  1743. [hsoft]
  1744. - Add more raw Tiff modes (RGBaX, RGBaXX, RGBAX, RGBAXX) #3335
  1745. [homm]
  1746. - Close existing WebP fp before setting new fp #3341
  1747. [radarhere]
  1748. - Add orientation, compression and id_section as TGA save keyword arguments #3327
  1749. [radarhere]
  1750. - Convert int values of RATIONAL TIFF tags to floats #3338
  1751. [radarhere, wiredfool]
  1752. - Fix code for PYTHONOPTIMIZE #3233
  1753. [hugovk]
  1754. - Changed ImageFilter.Kernel to subclass ImageFilter.BuiltinFilter, instead of the other way around #3273
  1755. [radarhere]
  1756. - Remove unused draw.draw_line, draw.draw_point and font.getabc methods #3232
  1757. [hugovk]
  1758. - Tests: Added ImageFilter tests #3295
  1759. [radarhere]
  1760. - Tests: Added ImageChops tests #3230
  1761. [hugovk, radarhere]
  1762. - AppVeyor: Download lib if not present in pillow-depends #3316
  1763. [radarhere]
  1764. - Travis CI: Add Python 3.7 and Xenial #3234
  1765. [hugovk]
  1766. - Docs: Added documentation for NumPy conversion #3301
  1767. [radarhere]
  1768. - Depends: Update libimagequant to 2.12.1 #3281
  1769. [radarhere]
  1770. - Add three-color support to ImageOps.colorize #3242
  1771. [tsennott]
  1772. - Tests: Add LA to TGA test modes #3222
  1773. [danpla]
  1774. - Skip outline if the draw operation fills with the same colour #2922
  1775. [radarhere]
  1776. - Flake8 fixes #3173, #3380
  1777. [radarhere]
  1778. - Avoid deprecated 'U' mode when opening files #2187
  1779. [jdufresne]
  1780. 5.2.0 (2018-07-01)
  1781. ------------------
  1782. - Fixed saving a multiframe image as a single frame PDF #3137
  1783. [radarhere]
  1784. - If a Qt version is already imported, attempt to use it first #3143
  1785. [radarhere]
  1786. - Fix transform fill color for alpha images #3147
  1787. [fozcode]
  1788. - TGA: Add support for writing RLE data #3186
  1789. [danpla]
  1790. - TGA: Read and write LA data #3178
  1791. [danpla]
  1792. - QuantOctree.c: Remove erroneous attempt to average over an empty range #3196
  1793. [tkoeppe]
  1794. - Changed ICNS format tests to pass on OS X 10.11 #3202
  1795. [radarhere]
  1796. - Fixed bug in ImageDraw.multiline_textsize() #3114
  1797. [tianyu139]
  1798. - Added getsize_multiline support for PIL.ImageFont #3113
  1799. [tianyu139]
  1800. - Added ImageFile get_format_mimetype method #3190
  1801. [radarhere]
  1802. - Changed mmap file pointer to use context manager #3216
  1803. [radarhere]
  1804. - Changed ellipse point calculations to be more evenly distributed #3142
  1805. [radarhere]
  1806. - Only extract first Exif segment #2946
  1807. [hugovk]
  1808. - Tests: Test ImageDraw2, WalImageFile #3135, #2989
  1809. [hugovk]
  1810. - Remove unnecessary '#if 0' code #3075
  1811. [hugovk]
  1812. - Tests: Added GD tests #1817
  1813. [radarhere]
  1814. - Fix collections ABCs DeprecationWarning in Python 3.7 #3123
  1815. [hugovk]
  1816. - unpack_from is faster than unpack of slice #3201
  1817. [landfillbaby]
  1818. - Docs: Add coordinate system links and file handling links in documentation #3204, #3214
  1819. [radarhere]
  1820. - Tests: TestFilePng: Fix test_save_l_transparency() #3182
  1821. [danpla]
  1822. - Docs: Correct argument name #3171
  1823. [radarhere]
  1824. - Docs: Update CMake download URL #3166
  1825. [radarhere]
  1826. - Docs: Improve Image.transform documentation #3164
  1827. [radarhere]
  1828. - Fix transform fillcolor argument when image mode is RGBA or LA #3163
  1829. [radarhere]
  1830. - Tests: More specific Exception testing #3158
  1831. [radarhere]
  1832. - Add getrgb HSB/HSV color strings #3148
  1833. [radarhere]
  1834. - Allow float values in getrgb HSL color string #3146
  1835. [radarhere]
  1836. - AppVeyor: Upgrade to Python 2.7.15 and 3.4.4 #3140
  1837. [radarhere]
  1838. - AppVeyor: Upgrade to PyPy 6.0.0 #3133
  1839. [hugovk]
  1840. - Deprecate PILLOW_VERSION and VERSION #3090
  1841. [hugovk]
  1842. - Support Python 3.7 #3076
  1843. [hugovk]
  1844. - Depends: Update freetype to 2.9.1, libjpeg to 9c, libwebp to 1.0.0 #3121, #3136, #3108
  1845. [radarhere]
  1846. - Build macOS wheels with Xcode 6.4, supporting older macOS versions #3068
  1847. [wiredfool]
  1848. - Fix _i2f compilation on some GCC versions #3067
  1849. [homm]
  1850. - Changed encoderinfo to have priority over info when saving GIF images #3086
  1851. [radarhere]
  1852. - Rename PIL.version to PIL._version and remove it from module #3083
  1853. [homm]
  1854. - Enable background colour parameter on rotate #3057
  1855. [storesource]
  1856. - Remove unnecessary ``#if 1`` directive #3072
  1857. [jdufresne]
  1858. - Remove unused Python class, Path #3070
  1859. [jdufresne]
  1860. - Fix dereferencing type-punned pointer will break strict-aliasing #3069
  1861. [jdufresne]
  1862. 5.1.0 (2018-04-02)
  1863. ------------------
  1864. - Close fp before return in ImagingSavePPM #3061
  1865. [kathryndavies]
  1866. - Added documentation for ICNS append_images #3051
  1867. [radarhere]
  1868. - Docs: Move intro text below its header #3021
  1869. [hugovk]
  1870. - CI: Rename appveyor.yml as .appveyor.yml #2978
  1871. [hugovk]
  1872. - Fix TypeError for JPEG2000 parser feed #3042
  1873. [hugovk]
  1874. - Certain corrupted jpegs can result in no data read #3023
  1875. [kkopachev]
  1876. - Add support for BLP file format #3007
  1877. [jleclanche]
  1878. - Simplify version checks #2998
  1879. [hugovk]
  1880. - Fix "invalid escape sequence" warning on Python 3.6+ #2996
  1881. [timgraham]
  1882. - Allow append_images to set .icns scaled images #3005
  1883. [radarhere]
  1884. - Support appending to existing PDFs #2965
  1885. [vashek]
  1886. - Fix and improve efficient saving of ICNS on macOS #3004
  1887. [radarhere]
  1888. - Build: Enable pip cache in AppVeyor build #3009
  1889. [thijstriemstra]
  1890. - Trim trailing whitespace #2985
  1891. [Metallicow]
  1892. - Docs: Correct reference to Image.new method #3000
  1893. [radarhere]
  1894. - Rearrange ImageFilter classes into alphabetical order #2990
  1895. [radarhere]
  1896. - Test: Remove duplicate line #2983
  1897. [radarhere]
  1898. - Build: Update AppVeyor PyPy version #3003
  1899. [radarhere]
  1900. - Tiff: Open 8 bit Tiffs with 5 or 6 channels, discarding extra channels #2938
  1901. [homm]
  1902. - Readme: Added Twitter badge #2930
  1903. [hugovk]
  1904. - Removed __main__ code from ImageCms #2942
  1905. [radarhere]
  1906. - Test: Changed assert statements to unittest calls #2961
  1907. [radarhere]
  1908. - Depends: Update libimagequant to 2.11.10, raqm to 0.5.0, freetype to 2.9 #3036, #3017, #2957
  1909. [radarhere]
  1910. - Remove _imaging.crc32 in favor of builtin Python crc32 implementation #2935
  1911. [wiredfool]
  1912. - Move Tk directory to src directory #2928
  1913. [hugovk]
  1914. - Enable pip cache in Travis CI #2933
  1915. [jdufresne]
  1916. - Remove unused and duplicate imports #2927
  1917. [radarhere]
  1918. - Docs: Changed documentation references to 2.x to 2.7 #2921
  1919. [radarhere]
  1920. - Fix memory leak when opening webp files #2974
  1921. [wiredfool]
  1922. - Setup: Fix "TypeError: 'NoneType' object is not iterable" for PPC and CRUX #2951
  1923. [hugovk]
  1924. - Setup: Add libdirs for ppc64le and armv7l #2968
  1925. [nehaljwani]
  1926. 5.0.0 (2018-01-01)
  1927. ------------------
  1928. - Docs: Added docstrings from documentation #2914
  1929. [radarhere]
  1930. - Test: Switch from nose to pytest #2815
  1931. [hugovk]
  1932. - Rework Source directory layout, preventing accidental import of PIL. #2911
  1933. [wiredfool]
  1934. - Dynamically link libraqm #2753
  1935. [wiredfool]
  1936. - Removed scripts directory #2901
  1937. [wiredfool]
  1938. - TIFF: Run all compressed tiffs through libtiff decoder #2899
  1939. [wiredfool]
  1940. - GIF: Add disposal option when saving GIFs #2902
  1941. [linnil1, wiredfool]
  1942. - EPS: Allow for an empty line in EPS header data #2903
  1943. [radarhere]
  1944. - PNG: Add support for sRGB and cHRM chunks, permit sRGB when no iCCP chunk present #2898
  1945. [wiredfool]
  1946. - Dependencies: Update Tk Tcl to 8.6.8 #2905
  1947. [radarhere]
  1948. - Decompression bomb error now raised for images 2x larger than a decompression bomb warning #2583
  1949. [wiredfool]
  1950. - Test: avoid random failure in test_effect_noise #2894
  1951. [hugovk]
  1952. - Increased epsilon for test_file_eps.py:test_showpage due to Arch update. #2896
  1953. [wiredfool]
  1954. - Removed check parameter from _save in BmpImagePlugin, PngImagePlugin, ImImagePlugin, PalmImagePlugin, and PcxImagePlugin. #2873
  1955. [radarhere]
  1956. - Make PngImagePlugin.add_text() zip argument type bool #2890
  1957. [jdufresne]
  1958. - Depends: Updated libwebp to 0.6.1 #2880
  1959. [radarhere]
  1960. - Remove unnecessary bool() calls in Image.registered_extensions and skipKnownBadTests #2891
  1961. [jdufresne]
  1962. - Fix count of BITSPERSAMPLE items in broken TIFF files #2883
  1963. [homm]
  1964. - Fillcolor parameter for Image.Transform #2852
  1965. [wiredfool]
  1966. - Test: Display differences for test failures #2862
  1967. [wiredfool]
  1968. - Added executable flag to file with shebang line #2884
  1969. [radarhere]
  1970. - Setup: Specify compatible Python versions for pip #2877
  1971. [hugovk]
  1972. - Dependencies: Updated libimagequant to 2.11.4 #2878
  1973. [radarhere]
  1974. - Setup: Warn if trying to install for Py3.7 on Windows #2855
  1975. [hugovk]
  1976. - Doc: Fonts can be loaded from a file-like object, not just filename #2861
  1977. [robin-norwood]
  1978. - Add eog support for Ubuntu Image Viewer #2864
  1979. [NafisFaysal]
  1980. - Test: Test on 3.7-dev on Travis CI #2870
  1981. [hugovk]
  1982. - Dependencies: Update libtiff to 4.0.9 #2871
  1983. [radarhere]
  1984. - Setup: Replace deprecated platform.dist with file existence check #2869
  1985. [wiredfool]
  1986. - Build: Fix setup.py on Debian #2853
  1987. [wiredfool]
  1988. - Docs: Correct error in ImageDraw documentation #2858
  1989. [meribold]
  1990. - Test: Drop Ubuntu Precise, Fedora 24, Fedora 25, add Fedora 27, Centos 7, Amazon v2 CI Support #2854, #2843, #2895, #2897
  1991. [wiredfool]
  1992. - Dependencies: Updated libimagequant to 2.11.3 #2849
  1993. [radarhere]
  1994. - Test: Fix test_image.py to use tempfile #2841
  1995. [radarhere]
  1996. - Replace PIL.OleFileIO deprecation warning with descriptive ImportError #2833
  1997. [hugovk]
  1998. - WebP: Add support for animated WebP files #2761
  1999. [jd20]
  2000. - PDF: Set encoderinfo for images when saving multi-page PDF. Fixes #2804. #2805
  2001. [ixio]
  2002. - Allow the olefile dependency to be optional #2789
  2003. [jdufresne]
  2004. - GIF: Permit LZW code lengths up to 12 bits in GIF decode #2813
  2005. [wiredfool]
  2006. - Fix unterminated string and unchecked exception in _font_text_asBytes. #2825
  2007. [wiredfool]
  2008. - PPM: Use fixed list of whitespace, rather relying on locale, fixes #272. #2831
  2009. [markmiscavage]
  2010. - Added support for generators when using append_images #2829, #2835
  2011. [radarhere]
  2012. - Doc: Correct PixelAccess.rst #2824
  2013. [hasahmed]
  2014. - Depends: Update raqm to 0.3.0 #2822
  2015. [radarhere]
  2016. - Docs: Link to maintained version of aggdraw #2809
  2017. [hugovk]
  2018. - Include license file in the generated wheel packages #2801
  2019. [jdufresne]
  2020. - Depends: Update openjpeg to 2.3.0 #2791
  2021. [radarhere]
  2022. - Add option to Makefile to build and install with C coverage #2781
  2023. [hugovk]
  2024. - Add context manager support to ImageFile.Parser and PngImagePlugin.ChunkStream #2793
  2025. [radarhere]
  2026. - ImageDraw.textsize: fix zero length error #2788
  2027. [wiredfool, hugovk]
  2028. 4.3.0 (2017-10-02)
  2029. ------------------
  2030. - Fix warning on pointer cast in isblock #2775, #2778
  2031. [cgohlke]
  2032. - Doc: Added macOS High Sierra tested Pillow version #2777
  2033. [radarhere]
  2034. - Use correct Windows handle type on 64 bit in imagingcms #2774
  2035. [cgohlke]
  2036. - 64 Bit Windows fix for block storage #2773
  2037. [cgohlke]
  2038. - Fix "expression result unused" warning #2764
  2039. [radarhere]
  2040. - Add 16bit Read/Write and RLE read support to SgiImageFile #2769
  2041. [jbltx, wiredfool]
  2042. - Block & array hybrid storage #2738
  2043. [homm]
  2044. - Common seek frame position check #1849
  2045. [radarhere]
  2046. - Doc: Add note about aspect ratio to Image thumbnail script #2281
  2047. [wilsonge]
  2048. - Fix ValueError: invalid version number '1.0.0rc1' in scipy release candidate #2771
  2049. [cgohlke]
  2050. - Unfreeze requirements.txt #2766
  2051. [hugovk]
  2052. - Test: ResourceWarning tests #2756
  2053. [hugovk]
  2054. - Use n_frames to determine is_animated if possible #2315
  2055. [radarhere]
  2056. - Doc: Corrected parameters in documentation #2768
  2057. [radarhere]
  2058. - Avoid unnecessary Image operations #1891
  2059. [radarhere]
  2060. - Added register_extensions method #1860
  2061. [radarhere]
  2062. - Fix TIFF support for I;16S, I;16BS, and I;32BS rawmodes #2748
  2063. [wiredfool]
  2064. - Fixed doc syntax in ImageDraw #2752
  2065. [radarhere]
  2066. - Fixed support for building on Windows/msys2. Added Appveyor CI coverage for python3 on msys2 #2746
  2067. [wiredfool]
  2068. - Fix ValueError in Exif/Tiff IFD #2719
  2069. [wiredfool]
  2070. - Use pathlib2 for Path objects on Python < 3.4 #2291
  2071. [asergi]
  2072. - Export only required properties in unsafe_ptrs #2740
  2073. [homm]
  2074. - Alpha composite fixes #2709
  2075. [homm]
  2076. - Faster Transpose operations, added 'Transverse' option #2730
  2077. [homm]
  2078. - Deprecate ImageOps undocumented functions gaussian_blur, gblur, unsharp_mask, usm and box_blur in favor of ImageFilter implementations #2735
  2079. [homm]
  2080. - Dependencies: Updated freetype to 2.8.1 #2741
  2081. [radarhere]
  2082. - Bug: Player skipped first image #2742
  2083. [radarhere]
  2084. - Faster filter operations for Kernel, Gaussian, and Unsharp Mask filters #2679
  2085. [homm]
  2086. - EPS: Add showpage to force rendering of some EPS images #2636
  2087. [kaplun]
  2088. - DOC: Fix type of palette parameter in Image.quantize. #2703
  2089. [kkopachev]
  2090. - DOC: Fix Ico docs to match code #2712
  2091. [hugovk]
  2092. - Added file pointer save to SpiderImagePlugin #2647
  2093. [radarhere]
  2094. - Add targa version 2 footer #2713
  2095. [jhultgre]
  2096. - Removed redundant lines #2714
  2097. [radarhere]
  2098. - Travis CI: Use default pypy/pypy3 #2721
  2099. [hugovk]
  2100. - Fix for SystemError when rendering an empty string, added in 4.2.0 #2706
  2101. [wiredfool]
  2102. - Fix for memory leaks in font handling added in 4.2.0 #2634
  2103. [wiredfool]
  2104. - Tests: cleanup, more tests. Fixed WMF save handler #2689
  2105. [radarhere]
  2106. - Removed debugging interface for Image.core.grabclipboard #2708
  2107. [radarhere]
  2108. - Doc syntax fix #2710
  2109. [radarhere]
  2110. - Faster packing and unpacking for RGB, LA, and related storage modes #2693
  2111. [homm]
  2112. - Use RGBX rawmode for RGB JPEG images where possible #1989
  2113. [homm]
  2114. - Remove palettes from non-palette modes in _new #2704
  2115. [wiredfool]
  2116. - Delete transparency info when convert'ing RGB/L to RGBA #2633
  2117. [olt]
  2118. - Code tweaks to ease type annotations #2687
  2119. [neiljp]
  2120. - Fixed incorrect use of 's#' to byteslike object #2691
  2121. [wiredfool]
  2122. - Fix JPEG subsampling labels for subsampling=2 #2698
  2123. [homm]
  2124. - Region of interest (box) for resampling #2254
  2125. [homm]
  2126. - Basic support for Termux (android) in setup.py #2684
  2127. [wiredfool]
  2128. - Bug: Fix Image.fromarray for numpy.bool type. #2683
  2129. [wiredfool]
  2130. - CI: Add Fedora 24 and 26 to Docker tests
  2131. [wiredfool]
  2132. - JPEG: Fix ZeroDivisionError when EXIF contains invalid DPI (0/0). #2667
  2133. [vytisb]
  2134. - Depends: Updated openjpeg to 2.2.0 #2669
  2135. [radarhere]
  2136. - Depends: Updated Tk Tcl to 8.6.7 #2668
  2137. [radarhere]
  2138. - Depends: Updated libimagequant to 2.10.2 #2660
  2139. [radarhere]
  2140. - Test: Added test for ImImagePlugin tell() #2675
  2141. [radarhere]
  2142. - Test: Additional tests for SGIImagePlugin #2659
  2143. [radarhere]
  2144. - New Image.getchannel method #2661
  2145. [homm]
  2146. - Remove unused im.copy2 and core.copy methods #2657
  2147. [homm]
  2148. - Fast Image.merge() #2677
  2149. [homm]
  2150. - Fast Image.split() #2676
  2151. [homm]
  2152. - Fast image allocation #2655
  2153. [homm]
  2154. - Storage cleanup #2654
  2155. [homm]
  2156. - FLI: Use frame count from FLI header #2674
  2157. [radarhere]
  2158. - Test: Test animated FLI file #2650
  2159. [hugovk]
  2160. - Bug: Fixed uninitialized memory in bc5 decoding #2648
  2161. [ifeherva]
  2162. - Moved SgiImagePlugin save error to before the start of write operations #2646
  2163. [radarhere]
  2164. - Move createfontdatachunk.py so isn't installed globally #2645
  2165. [hugovk]
  2166. - Bug: Fix unexpected keyword argument 'align' #2641
  2167. [hugovk]
  2168. - Add newlines to error message for clarity #2640
  2169. [hugovk]
  2170. - Docs: Updated redirected URL #2637
  2171. [radarhere]
  2172. - Bug: Fix JPEG DPI when EXIF is invalid #2632
  2173. [wiredfool]
  2174. - Bug: Fix for font getsize on empty string #2624
  2175. [radarhere]
  2176. - Docs: Improved ImageDraw documentation #2626
  2177. [radarhere]
  2178. - Docs: Corrected alpha_composite args documentation #2627
  2179. [radarhere]
  2180. - Docs: added the description of the filename attribute to images.rst #2621
  2181. [dasdachs]
  2182. - Dependencies: Updated libimagequant to 2.10.1 #2616
  2183. [radarhere]
  2184. - PDF: Renamed parameter to not shadow built-in dict #2612
  2185. [kijeong]
  2186. 4.2.1 (2017-07-06)
  2187. ------------------
  2188. - CI: Fix version specification and test on CI for PyPy/Windows #2608
  2189. [wiredfool]
  2190. 4.2.0 (2017-07-01)
  2191. ------------------
  2192. - Doc: Clarified Image.save:append_images documentation #2604
  2193. [radarhere]
  2194. - CI: Amazon Linux and Centos6 docker images added to Travis CI #2585
  2195. [wiredfool]
  2196. - Image.alpha_composite added #2595
  2197. [wiredfool]
  2198. - Complex Text Support #2576
  2199. [ShamsaHamed, Fahad-Alsaidi, wiredfool]
  2200. - Added threshold parameter to ImageDraw.floodfill #2599
  2201. [nediamond]
  2202. - Added dBATCH parameter to ghostscript command #2588
  2203. [radarhere]
  2204. - JPEG: Adjust buffer size when icc_profile > MAXBLOCK #2596
  2205. [Darou]
  2206. - Specify Pillow Version in one place #2517
  2207. [wiredfool]
  2208. - CI: Change the owner of the TRAVIS_BUILD_DIR, fixing broken docker runs #2587
  2209. [wiredfool]
  2210. - Fix truncated PNG loading for some images, Fix memory leak on truncated PNG images. #2541, #2598
  2211. [homm]
  2212. - Add decompression bomb check to Image.crop #2410
  2213. [wiredfool]
  2214. - ImageFile: Ensure that the ``err_code`` variable is initialized in case of exception. #2363
  2215. [alexkiro]
  2216. - Tiff: Support append_images for saving multipage TIFFs #2406
  2217. [blochl]
  2218. - Doc: Clarify that draft is only implemented for JPEG and PCD #2409
  2219. [wiredfool]
  2220. - Test: MicImagePlugin #2447
  2221. [hugovk]
  2222. - Use round() instead of floor() to eliminate zero coefficients in resample #2558
  2223. [homm]
  2224. - Remove deprecated code #2549
  2225. [hugovk]
  2226. - Added append_images to PDF saving #2526
  2227. [radarhere]
  2228. - Remove unused function core image function new_array #2548
  2229. [hugovk]
  2230. - Remove unnecessary calls to dict.keys() #2551
  2231. [jdufresne]
  2232. - Add more ImageDraw.py tests and remove unused Draw.c code #2533
  2233. [hugovk]
  2234. - Test: More tests for ImageMorph #2554
  2235. [hugovk]
  2236. - Test: McIDAS area file #2552
  2237. [radarhere]
  2238. - Update Feature Detection #2520
  2239. [wiredfool]
  2240. - CI: Update pypy on Travis CI #2573
  2241. [hugovk]
  2242. - ImageMorph: Fix wrong expected size of MRLs read from disk #2561
  2243. [dov]
  2244. - Docs: Update install docs for FreeBSD #2546
  2245. [wiredfool]
  2246. - Build: Ignore OpenJpeg 1.5 on FreeBSD #2544
  2247. [melvyn-sopacua]
  2248. - Remove 'not yet implemented' methods from PIL 1.1.4 #2538
  2249. [hugovk]
  2250. - Dependencies: Update FreeType to 2.8, LibTIFF to 4.0.8 and libimagequant to 2.9.1 #2535 #2537 #2540
  2251. [radarhere]
  2252. - Raise TypeError and not also UnboundLocalError in ImageFile.Parser() #2525
  2253. [joshblum]
  2254. - Test: Use Codecov for coverage #2528
  2255. [hugovk]
  2256. - Use PNG for Image.show() #2527
  2257. [HinTak, wiredfool]
  2258. - Remove WITH_DEBUG compilation flag #2522
  2259. [wiredfool]
  2260. - Fix return value on parameter parse error in _webp.c #2521
  2261. [adw1n]
  2262. - Set executable flag on scripts with shebang line #2295
  2263. [radarhere]
  2264. - Flake8 #2460
  2265. [radarhere]
  2266. - Doc: Release Process Changes #2516
  2267. [wiredfool]
  2268. - CI: Added region for s3 deployment on appveyor #2515
  2269. [wiredfool]
  2270. - Doc: Updated references to point to existing files #2507
  2271. [radarhere]
  2272. - Return copy on Image crop if crop dimensions match the image #2471
  2273. [radarhere]
  2274. - Test: Optimize CI speed #2464, #2466
  2275. [hugovk]
  2276. 4.1.1 (2017-04-28)
  2277. ------------------
  2278. - Undef PySlice_GetIndicesEx, see https://bugs.python.org/issue29943 #2493
  2279. [cgohlke]
  2280. - Fix for file with DPI in EXIF but not metadata, and XResolution is an int rather than tuple #2484
  2281. [hugovk]
  2282. - Docs: Removed broken download counter badge #2487
  2283. [hugovk]
  2284. - Docs: Fixed rst syntax error #2477
  2285. [thebjorn]
  2286. 4.1.0 (2017-04-03)
  2287. ------------------
  2288. - Close files after loading if possible #2330
  2289. [homm, wiredfool]
  2290. - Fix Image Access to be reloadable when embedding the Python interpreter #2296
  2291. [wiredfool, cgohlke]
  2292. - Fetch DPI from EXIF if not specified in JPEG header #2449, #2472
  2293. [hugovk]
  2294. - Removed winbuild checksum verification #2468
  2295. [radarhere]
  2296. - Git: Set ContainerIO test file as binary #2469
  2297. [cgohlke]
  2298. - Remove superfluous import of FixTk #2455
  2299. [cgohlke)
  2300. - Fix import of tkinter/Tkinter #2456
  2301. [cgohlke)
  2302. - Pure Python Decoders, including Python decoder to fix for MSP images #1938
  2303. [wiredfool, hugovk]
  2304. - Reorganized GifImagePlugin, fixes #2314. #2374
  2305. [radarhere, wiredfool]
  2306. - Doc: Reordered operating systems in Compatibility Matrix #2436
  2307. [radarhere]
  2308. - Test: Additional tests for BufrStub, Eps, Container, GribStub, IPTC, Wmf, XVThumb, ImageDraw, ImageMorph, ImageShow #2425
  2309. [radarhere]
  2310. - Health fixes #2437
  2311. [radarhere]
  2312. - Test: Correctness tests ContainerIO, XVThumbImagePlugin, BufrStubImagePlugin, GribStubImagePlugin, FitsStubImagePlugin, Hdf5StubImagePlugin, PixarImageFile, PsdImageFile #2443, #2442, #2441, #2440, #2431, #2430, #2428, #2427
  2313. [hugovk]
  2314. - Remove unused imports #1822
  2315. [radarhere]
  2316. - Replaced KeyError catch with dictionary get method #2424
  2317. [radarhere]
  2318. - Test: Removed unrunnable code in test_image_toqimage #2415
  2319. [hugovk]
  2320. - Removed use of spaces in TIFF kwargs names, deprecated in 2.7 #1390
  2321. [radarhere]
  2322. - Removed deprecated ImageDraw setink, setfill, setfont methods #2220
  2323. [jdufresne]
  2324. - Send unwanted subprocess output to /dev/null #2253
  2325. [jdufresne]
  2326. - Fix division by zero when creating 0x0 image from numpy array #2419
  2327. [hugovk]
  2328. - Test: Added matrix convert tests #2381
  2329. [hugovk]
  2330. - Replaced broken URL to partners.adobe.com #2413
  2331. [radarhere]
  2332. - Removed unused private functions in setup.py and build_dep.py #2414
  2333. [radarhere]
  2334. - Test: Fixed Qt tests for QT5 and saving 1 bit PNG #2394
  2335. [wiredfool]
  2336. - Test: docker builds for Arch and Debian Stretch #2394
  2337. [wiredfool]
  2338. - Updated libwebp to 0.6.0 on appveyor #2395
  2339. [radarhere]
  2340. - More explicit error message when saving to a file with invalid extension #2399
  2341. [ces42]
  2342. - Docs: Update some http urls to https #2403
  2343. [hugovk]
  2344. - Preserve aux/alpha channels when performing Imagecms transforms #2355
  2345. [gunjambi]
  2346. - Test linear and radial gradient effects #2382
  2347. [hugovk]
  2348. - Test ImageDraw.Outline and and ImageDraw.Shape #2389
  2349. [hugovk]
  2350. - Added PySide to ImageQt documentation #2392
  2351. [radarhere]
  2352. - BUG: Empty image mode no longer causes a crash #2380
  2353. [evalapply]
  2354. - Exclude .travis and contents from manifest #2386
  2355. [radarhere]
  2356. - Remove 'MIT-like' from license #2145
  2357. [wiredfool]
  2358. - Tests: Add tests for several Image operations #2379
  2359. [radarhere]
  2360. - PNG: Moved iCCP chunk before PLTE chunk when saving as PNG, restricted chunks known value/ordering #2347
  2361. [radarhere]
  2362. - Default to inch-interpretation for missing ResolutionUnit in TiffImagePlugin #2365
  2363. [lambdafu]
  2364. - Bug: Fixed segfault when using ImagingTk on pypy Issue #2376, #2359.
  2365. [wiredfool]
  2366. - Bug: Fixed Integer overflow using ImagingTk on 32 bit platforms #2359
  2367. [wiredfool, QuLogic]
  2368. - Tests: Added docker images for testing alternate platforms. See also https://github.com/python-pillow/docker-images. #2368
  2369. [wiredfool]
  2370. - Removed PIL 1.0 era TK readme that concerns Windows 95/NT #2360
  2371. [wiredfool]
  2372. - Prevent ``nose -v`` printing docstrings #2369
  2373. [hugovk]
  2374. - Replaced absolute PIL imports with relative imports #2349
  2375. [radarhere]
  2376. - Added context managers for file handling #2307
  2377. [radarhere]
  2378. - Expose registered file extensions in Image #2343
  2379. [iggomez, radarhere]
  2380. - Make mode descriptor cache initialization thread-safe. #2351
  2381. [gunjambi]
  2382. - Updated Windows test dependencies: Freetype 2.7.1, zlib 1.2.11 #2331, #2332, #2357
  2383. [radarhere]
  2384. - Followed upstream pngquant packaging reorg to libimagquant #2354
  2385. [radarhere]
  2386. - Fix invalid string escapes #2352
  2387. [hugovk]
  2388. - Add test for crop operation with no argument #2333
  2389. [radarhere]
  2390. 4.0.0 (2017-01-01)
  2391. ------------------
  2392. - Refactor out postprocessing hack to load_end in PcdImageFile
  2393. [wiredfool]
  2394. - Add center and translate option to Image.rotate. #2328
  2395. [lambdafu]
  2396. - Test: Relax WMF test condition, fixes #2323. #2327
  2397. [wiredfool]
  2398. - Allow 0 size images, Fixes #2259, Reverts to pre-3.4 behavior. #2262
  2399. [wiredfool]
  2400. - SGI: Save uncompressed SGI/BW/RGB/RGBA files #2325
  2401. [jbltx]
  2402. - Depends: Updated pngquant to 2.8.2 #2319
  2403. [radarhere]
  2404. - Test: Added correctness tests for opening SGI images #2324
  2405. [wiredfool]
  2406. - Allow passing a list or tuple of individual frame durations when saving a GIF #2298
  2407. [Xdynix]
  2408. - Unified different GIF optimize conditions #2196
  2409. [radarhere]
  2410. - Build: Refactor dependency installation #2305
  2411. [hugovk]
  2412. - Test: Add python 3.6 to travis, tox #2304
  2413. [hugovk]
  2414. - Test: Fix coveralls coverage for Python+C #2300
  2415. [hugovk]
  2416. - Remove executable bit and shebang from OleFileIO.py #2308
  2417. [jwilk, radarhere]
  2418. - PyPy: Buffer interface workaround #2294
  2419. [wiredfool]
  2420. - Test: Switch to Ubuntu Trusty 14.04 on Travis CI #2294
  2421. - Remove vendored version of olefile Python package in favor of upstream #2199
  2422. [jdufresne]
  2423. - Updated comments to use print as a function #2234
  2424. [radarhere]
  2425. - Set executable flag on selftest.py, setup.py and added shebang line #2282, #2277
  2426. [radarhere, homm]
  2427. - Test: Increase epsilon for FreeType 2.7 as rendering is slightly different. #2286
  2428. [hugovk]
  2429. - Test: Faster assert_image_similar #2279
  2430. [homm]
  2431. - Removed deprecated internal "stretch" method #2276
  2432. [homm]
  2433. - Removed the handles_eof flag in decode.c #2223
  2434. [wiredfool]
  2435. - Tiff: Fix for writing Tiff to BytesIO using libtiff #2263
  2436. [wiredfool]
  2437. - Doc: Design docs #2269
  2438. [wiredfool]
  2439. - Test: Move tests requiring libtiff to test_file_libtiff #2273
  2440. [wiredfool]
  2441. - Update Maxblock heuristic #2275
  2442. [wiredfool]
  2443. - Fix for 2-bit palette corruption #2274
  2444. [pdknsk, wiredfool]
  2445. - Tiff: Update info.icc_profile when using libtiff reader. #2193
  2446. [lambdafu]
  2447. - Test: Fix bug in test_ifd_rational_save when libtiff is not available #2270
  2448. [ChristopherHogan]
  2449. - ICO: Only save relevant sizes #2267
  2450. [hugovk]
  2451. - ICO: Allow saving .ico files of 256x256 instead of 255x255 #2265
  2452. [hugovk]
  2453. - Fix TIFFImagePlugin ICC color profile saving. #2087
  2454. [cskau]
  2455. - Doc: Improved description of ImageOps.deform resample parameter #2256
  2456. [radarhere]
  2457. - EMF: support negative bounding box coordinates #2249
  2458. [glexey]
  2459. - Close file if opened in WalImageFile #2216
  2460. [radarhere]
  2461. - Use Image._new() instead of _makeself() #2248
  2462. [homm]
  2463. - SunImagePlugin fixes #2241
  2464. [wiredfool]
  2465. - Use minimal scale for jpeg drafts #2240
  2466. [homm]
  2467. - Updated dependency scripts to use FreeType 2.7, OpenJpeg 2.1.2, WebP 0.5.2 and Tcl/Tk 8.6.6 #2235, #2236, #2237, #2290, #2302
  2468. [radarhere]
  2469. - Fix "invalid escape sequence" bytestring warnings in Python 3.6 #2186
  2470. [timgraham]
  2471. - Removed support for Python 2.6 and Python 3.2 #2192
  2472. [jdufresne]
  2473. - Setup: Raise custom exceptions when required/requested dependencies are not found #2213
  2474. [wiredfool]
  2475. - Use a context manager in FontFile.save() to ensure file is always closed #2226
  2476. [jdufresne]
  2477. - Fixed bug in saving to fp-objects in Python >= 3.4 #2227
  2478. [radarhere]
  2479. - Use a context manager in ImageFont._load_pilfont() to ensure file is always closed #2232
  2480. [jdufresne]
  2481. - Use generator expressions instead of list comprehension #2225
  2482. [jdufresne]
  2483. - Close file after reading in ImagePalette.load() #2215
  2484. [jdufresne]
  2485. - Changed behaviour of default box argument for paste method to match docs #2211
  2486. [radarhere]
  2487. - Add support for another BMP bitfield #2221
  2488. [jmerdich]
  2489. - Added missing top-level test __main__ #2222
  2490. [radarhere]
  2491. - Replaced range(len()) #2197
  2492. [radarhere]
  2493. - Fix for ImageQt Segfault, fixes #1370 #2182
  2494. [wiredfool]
  2495. - Setup: Close file in setup.py after finished reading #2208
  2496. [jdufresne]
  2497. - Setup: optionally use pkg-config (when present) to detect dependencies #2074
  2498. [garbas]
  2499. - Search for tkinter first in builtins #2210
  2500. [matthew-brett]
  2501. - Tests: Replace try/except/fail pattern with TestCase.assertRaises() #2200
  2502. [jdufresne]
  2503. - Tests: Remove unused, open files at top level of tests #2188
  2504. [jdufresne]
  2505. - Replace type() equality checks with isinstance #2184
  2506. [jdufresne]
  2507. - Doc: Move ICO out of the list of read-only file formats #2180
  2508. [alexwlchan]
  2509. - Doc: Fix formatting, too-short title underlines and malformed table #2175
  2510. [hugovk]
  2511. - Fix BytesWarnings #2172
  2512. [jdufresne]
  2513. - Use Integer division to eliminate deprecation warning. #2168
  2514. [mastermatt]
  2515. - Doc: Update compatibility matrix
  2516. [daavve, wiredfool]
  2517. 3.4.2 (2016-10-18)
  2518. ------------------
  2519. - Fix Resample coefficient calculation #2162
  2520. [homm]
  2521. 3.4.1 (2016-10-04)
  2522. ------------------
  2523. - Allow lists as arguments for Image.new() #2149
  2524. [homm]
  2525. - Fix fix for map.c overflow #2151 (also in 3.3.3)
  2526. [wiredfool]
  2527. 3.4.0 (2016-10-03)
  2528. ------------------
  2529. - Removed Image.core.open_ppm, added negative image size checks in Image.py. #2146
  2530. [wiredfool]
  2531. - Windows build: fetch dependencies from pillow-depends #2095
  2532. [hugovk]
  2533. - Add TIFF save_all writer. #2140
  2534. [lambdafu, vashek]
  2535. - Move libtiff fd duplication to _load_libtiff #2141
  2536. [sekrause]
  2537. - Speed up GIF save optimization step, fixes #2093. #2133
  2538. [wiredfool]
  2539. - Fix for ImageCms Segfault, Issue #2037. #2131
  2540. [wiredfool]
  2541. - Make Image.crop an immediate operation, not lazy. #2138
  2542. [wiredfool]
  2543. - Skip empty values in ImageFileDirectory #2024
  2544. [homm]
  2545. - Force reloading palette when using mmap in ImageFile. #2139
  2546. [lambdafu]
  2547. - Fix "invalid escape sequence" warning in Python 3.6 #2136
  2548. [timgraham]
  2549. - Update documentation about drafts #2137
  2550. [radarhere]
  2551. - Converted documentation parameter format, comments to docstrings #2021
  2552. [radarhere]
  2553. - Fixed typos #2128 #2142
  2554. [radarhere]
  2555. - Renamed references to OS X to macOS #2125 2130
  2556. [radarhere]
  2557. - Use truth value when checking for progressive and optimize option on save #2115, #2129
  2558. [radarhere]
  2559. - Convert DPI to ints when saving as JPEG #2102
  2560. [radarhere]
  2561. - Added append_images parameter to GIF saving #2103
  2562. [radarhere]
  2563. - Speedup paste with masks up to 80% #2015
  2564. [homm]
  2565. - Rewrite DDS decoders in C, add DXT3 and BC7 decoders #2068
  2566. [Mischanix]
  2567. - Fix PyArg_ParseTuple format in getink() #2070
  2568. [arjennienhuis]
  2569. - Fix saving originally missing TIFF tags. #2111
  2570. [anntzer]
  2571. - Allow pathlib.Path in Image.open on Python 2.7 #2110
  2572. [patricksnape]
  2573. - Use modern base64 interface over deprecated #2121
  2574. [hugovk]
  2575. - ImageColor.getrgb hexadecimal RGBA #2114
  2576. [homm]
  2577. - Test fix for bigendian machines #2092
  2578. [wiredfool]
  2579. - Resampling lookups, trailing empty coefficients, precision #2008
  2580. [homm]
  2581. - Add (un)packing between RGBA and BGRa #2057
  2582. [arjennienhuis]
  2583. - Added return for J2k (and fpx) Load to return a pixel access object #2061
  2584. [wiredfool]
  2585. - Skip failing numpy tests on Pypy <= 5.3.1 #2090
  2586. [arjennienhuis]
  2587. - Show warning when trying to save RGBA image as JPEG #2010
  2588. [homm]
  2589. - Respect pixel centers during transform #2022
  2590. [homm]
  2591. - TOC for supported file formats #2056
  2592. [polarize]
  2593. - Fix conversion of bit images to numpy arrays Fixes #350, #2058
  2594. [matthew-brett]
  2595. - Add ImageOps.scale to expand or contract a PIL image by a factor #2011
  2596. [vlmath]
  2597. - Flake8 fixes #2050
  2598. [hugovk]
  2599. - Updated freetype to 2.6.5 on Appveyor builds #2035
  2600. [radarhere]
  2601. - PCX encoder fixes #2023, pr #2041
  2602. [homm]
  2603. - Docs: Windows console prompts are > #2031
  2604. [techtonik]
  2605. - Expose Pillow package version as PIL.__version__ #2027
  2606. [techtonik]
  2607. - Add Box and Hamming filters for resampling #1959
  2608. [homm]
  2609. - Retain a reference to core image object in PyAccess #2009
  2610. [homm]
  2611. 3.3.3 (2016-10-04)
  2612. ------------------
  2613. - Fix fix for map.c overflow #2151
  2614. [wiredfool]
  2615. 3.3.2 (2016-10-03)
  2616. ------------------
  2617. - Fix negative image sizes in Storage.c #2146
  2618. [wiredfool]
  2619. - Fix integer overflow in map.c #2146
  2620. [wiredfool]
  2621. 3.3.1 (2016-08-18)
  2622. ------------------
  2623. - Fix C90 compilation error for Tcl / Tk rewrite #2033
  2624. [matthew-brett]
  2625. - Fix image loading when rotating by 0 deg #2052
  2626. [homm]
  2627. 3.3.0 (2016-07-01)
  2628. ------------------
  2629. - Fixed enums for Resolution Unit and Predictor in TiffTags.py #1998
  2630. [wiredfool]
  2631. - Fix issue converting P mode to LA #1986
  2632. [didrix]
  2633. - Moved test_j2k_overflow to check_j2k_overflow, prevent DOS of our 32bit testing machines #1995
  2634. [wiredfool]
  2635. - Skip CRC checks in PNG files when LOAD_TRUNCATED_IMAGES is enabled #1991
  2636. [kkopachev]
  2637. - Added CMYK mode for opening EPS files #1826
  2638. [radarhere]
  2639. - Docs: OSX build instruction clarification #1994
  2640. [wiredfool]
  2641. - Docs: Filter comparison table #1993
  2642. [homm]
  2643. - Removal of pthread based Incremental.c, new interface for file decoders/encoders to access the python file. Fixes assorted J2k Hangs. #1934
  2644. [wiredfool]
  2645. - Skip unnecessary passes when resizing #1954
  2646. [homm]
  2647. - Removed duplicate code in ImagePalette #1832
  2648. [radarhere]
  2649. - test_imagecms: Reduce precision of extended info due to 32 bit machine precision #1990
  2650. [AbdealiJK]
  2651. - Binary Tiff Metadata/ICC profile. #1988
  2652. [wiredfool]
  2653. - Ignore large text blocks in PNG if LOAD_TRUNCATED_IMAGES is enabled #1970
  2654. [homm]
  2655. - Replace index = index+1 in docs with +=1
  2656. [cclauss]
  2657. - Skip extra 0xff00 in jpeg #1977
  2658. [kkopachev]
  2659. - Use bytearray for palette mutable storage #1985
  2660. [radarhere, wiredfool]
  2661. - Added additional uint modes for Image.fromarray, more extensive tests of fromarray #1984
  2662. [mairsbw, wiredfool]
  2663. - Fix for program importing PyQt4 when PyQt5 also installed #1942
  2664. [hugovk]
  2665. - Changed depends/install_*.sh urls to point to github pillow-depends repo #1983
  2666. [wiredfool]
  2667. - Allow ICC profile from ``encoderinfo`` while saving PNGs #1909
  2668. [homm]
  2669. - Fix integer overflow on ILP32 systems (32-bit Linux). #1975
  2670. [lambdafu]
  2671. - Change function declaration to match Tcl_CmdProc type #1966
  2672. [homm]
  2673. - Integer overflow checks on all calls to \*alloc #1781
  2674. [wiredfool]
  2675. - Change equals method on Image so it short circuits #1967
  2676. [mattBoros]
  2677. - Runtime loading of TCL/TK libraries, eliminating build time dependency. #1932
  2678. [matthew-brett]
  2679. - Cleanup of transform methods #1941
  2680. [homm]
  2681. - Fix "Fatal Python error: UNREF invalid object" in debug builds #1936
  2682. [wiredfool]
  2683. - Setup fixes for Alpine linux #1937
  2684. [wiredfool]
  2685. - Split resample into horizontal + vertical passes #1933
  2686. [homm]
  2687. - Box blur with premultiplied alpha #1914
  2688. [homm]
  2689. - Add libimagequant support in quantize() #1889
  2690. [rr-]
  2691. - Added internal Premultiplied luminosity (La) mode #1912
  2692. [homm]
  2693. - Fixed point integer resample #1881
  2694. [homm]
  2695. - Removed docs/BUILDME script #1924
  2696. [radarhere]
  2697. - Moved comments to docstrings #1926
  2698. [hugovk]
  2699. - Include Python.h before wchar.h so _GNU_SOURCE is set consistently #1906
  2700. [hugovk]
  2701. - Updated example decoder in documentation #1899
  2702. [radarhere]
  2703. - Added support for GIF comment extension #1896
  2704. [radarhere]
  2705. - Removed support for pre- 1.5.2 list form of Image info in Image.new #1897
  2706. [radarhere]
  2707. - Fix typos in TIFF tags #1918
  2708. [radarhere]
  2709. - Skip tests that require libtiff if it is not installed #1893 (fixes #1866)
  2710. [wiredfool]
  2711. - Skip test when icc profile is not available, fixes #1887. #1892
  2712. [doko42]
  2713. - Make deprecated functions raise NotImplementedError instead of Exception. #1862, #1890
  2714. [daniel-leicht, radarhere]
  2715. - Replaced os.system with subprocess.call in setup.py #1879
  2716. [radarhere]
  2717. - Corrected Image show documentation #1886
  2718. [radarhere]
  2719. - Added check for executable permissions to ImageShow #1880
  2720. [radarhere]
  2721. - Fixed tutorial code and added explanation #1877
  2722. [radarhere]
  2723. - Added OS X support for ImageGrab grabclipboard #1837
  2724. [radarhere]
  2725. - Combined duplicate code in ImageTk #1856
  2726. [radarhere]
  2727. - Added --disable-platform-guessing option to setup.py build extension #1861
  2728. [angeloc]
  2729. - Fixed loading Transparent PNGs with a transparent black color #1840
  2730. [olt]
  2731. - Add support for LA mode in Image.fromarray #1865
  2732. [pierriko]
  2733. - Make ImageFile load images in read-only mode #1864
  2734. [hdante]
  2735. - Added _accept hook for XVThumbImagePlugin #1853
  2736. [radarhere]
  2737. - Test TIFF with LZW compression #1855, TGA RLE file #1854
  2738. [hugovk]
  2739. - Improved SpiderImagePlugin help text #1863
  2740. [radarhere]
  2741. - Updated Sphinx project description #1870
  2742. [radarhere]
  2743. - Remove support for Python 3.0 from _imaging.c #1851
  2744. [radarhere]
  2745. - Jpeg qtables are unsigned chars #1814, #1921
  2746. [thebostik]
  2747. - Added additional EXIF tags #1841, TIFF Tags #1821
  2748. [radarhere]
  2749. - Changed documentation to refer to ImageSequence Iterator #1833
  2750. [radarhere]
  2751. - Fix Fedora prerequisites in installation docs, depends script #1842
  2752. [living180]
  2753. - Added _accept hook for PixarImagePlugin #1843
  2754. [radarhere]
  2755. - Removed outdated scanner classifier #1823
  2756. [radarhere]
  2757. - Combined identical error messages in _imaging #1825
  2758. [radarhere]
  2759. - Added debug option for setup.py to trace header and library finding #1790
  2760. [wiredfool]
  2761. - Fix doc building on travis #1820, #1844
  2762. [wiredfool]
  2763. - Fix for DIB/BMP images #1813, #1847
  2764. [wiredfool]
  2765. - Add PixarImagePlugin file extension #1809
  2766. [radarhere]
  2767. - Catch struct.errors when verifying png files #1805
  2768. [wiredfool]
  2769. - SpiderImagePlugin: raise an error when seeking in a non-stack file #1794
  2770. [radarhere, jmichalon]
  2771. - Added support for 2/4 bpp Tiff grayscale images #1789
  2772. [zwhfly]
  2773. - Removed unused variable from selftest #1788
  2774. [radarhere]
  2775. - Added warning for as_dict method (deprecated in 3.0.0) #1799
  2776. [radarhere]
  2777. - Removed powf support for older Python versions #1784
  2778. [radarhere]
  2779. - Health fixes #1625 #1903
  2780. [radarhere]
  2781. 3.2.0 (2016-04-01)
  2782. ------------------
  2783. - Added install docs for Fedora 23 and FreeBSD #1729, #1739, #1792
  2784. [koobs, zandermartin, wiredfool]
  2785. - Fixed TIFF multiframe load when the frames have different compression types #1782
  2786. [radarhere, geka000]
  2787. - Added __copy__ method to Image #1772
  2788. [radarhere]
  2789. - Updated dates in PIL license in OleFileIO README #1787
  2790. [radarhere]
  2791. - Corrected Tiff tag names #1786
  2792. [radarhere]
  2793. - Fixed documented name of JPEG property #1783
  2794. [radarhere]
  2795. - Fixed UnboundLocalError when loading a corrupt jpeg2k file #1780
  2796. [wiredfool]
  2797. - Fixed integer overflow in path.c #1773
  2798. [wiredfool, nedwill]
  2799. - Added debug to command line help text for pilprint #1766
  2800. [radarhere]
  2801. - Expose many more fields in ICC Profiles #1756
  2802. [lambdafu]
  2803. - Documentation changes, URL update, transpose, release checklist
  2804. [radarhere]
  2805. - Fixed saving to nonexistant files specified by pathlib.Path objects #1748 (fixes #1747)
  2806. [radarhere]
  2807. - Round Image.crop arguments to the nearest integer #1745 (fixes #1744)
  2808. [hugovk]
  2809. - Fix uninitialized variable warning in _imaging.c:getink #1663 (fixes #486)
  2810. [wiredfool]
  2811. - Disable multiprocessing install on cygwin #1700 (fixes #1690)
  2812. [wiredfool]
  2813. - Fix the error reported when libz is not found #1764
  2814. [wiredfool]
  2815. - More general error check to avoid Symbol not found: _PyUnicodeUCS2_AsLatin1String on OS X #1761
  2816. [wiredfool]
  2817. - Added py35 to tox envlist #1724
  2818. [radarhere]
  2819. - Fix EXIF tag name typos #1736
  2820. [zarlant, radarhere]
  2821. - Updated freetype to 2.6.3, Tk/Tcl to 8.6.5 and 8.5.19 #1725, #1752
  2822. [radarhere]
  2823. - Add a loader for the FTEX format from Independence War 2: Edge of Chaos #1688
  2824. [jleclanche]
  2825. - Improved alpha_composite documentation #1698
  2826. [radarhere]
  2827. - Extend ImageDraw.text method to pass on multiline_text method specific arguments #1647
  2828. [radarhere]
  2829. - Allow ImageSequence to seek to zero #1686
  2830. [radarhere]
  2831. - ImageSequence Iterator is now an iterator #1649
  2832. [radarhere]
  2833. - Updated windows test builds to jpeg9b #1673
  2834. [radarhere]
  2835. - Fixed support for .gbr version 1 images, added support for version 2 in GbrImagePlugin #1653
  2836. [wiredfool]
  2837. - Clarified which YCbCr format is used #1677
  2838. [radarhere]
  2839. - Added TiffTags documentation, Moved windows build documentation to winbuild/ #1667
  2840. [wiredfool]
  2841. - Add tests for OLE file based formats #1678
  2842. [radarhere]
  2843. - Add TIFF IFD test #1671
  2844. [radarhere]
  2845. - Add a basic DDS image plugin with more tests #1654
  2846. [jleclanche, hugovk, wiredfool]
  2847. - Fix incorrect conditional in encode.c #1638
  2848. [manisandro]
  2849. 3.1.2 (2016-04-01)
  2850. ------------------
  2851. - Fixed an integer overflow in Jpeg2KEncode.c causing a buffer overflow. CVE-2016-3076
  2852. [wiredfool]
  2853. 3.1.1 (2016-02-04)
  2854. ------------------
  2855. - Fixed an integer overflow in Resample.c causing writes in the Python heap.
  2856. [nedwill]
  2857. - Fixed a buffer overflow in PcdDecode.c causing a segfault when opening PhotoCD files. CVE-2016-2533
  2858. [wiredfool]
  2859. - Fixed a buffer overflow in FliDecode.c causing a segfault when opening FLI files. CVE-2016-0775
  2860. [wiredfool]
  2861. - Fixed a buffer overflow in TiffDecode.c causing an arbitrary amount of memory to be overwritten when opening a specially crafted invalid TIFF file. CVE-2016-0740
  2862. [wiredfool]
  2863. 3.1.0 (2016-01-04)
  2864. ------------------
  2865. - Fixing test failures on Python 2.6/Windows #1633
  2866. [wiredfool]
  2867. - Limit metadata tags when writing using libtiff #1620
  2868. [wiredfool]
  2869. - Rolling back exif support to pre-3.0 format #1627
  2870. [wiredfool]
  2871. - Fix Divide by zero in Exif, add IFDRational class #1531
  2872. [wiredfool]
  2873. - Catch the IFD error near the source #1622
  2874. [wiredfool]
  2875. - Added release notes for 3.1.0 #1623
  2876. [radarhere]
  2877. - Updated spacing to be consistent between multiline methods #1624
  2878. [radarhere]
  2879. - Let EditorConfig take care of some basic formatting #1489
  2880. [hugovk]
  2881. - Restore gpsexif data to the v1 form #1619
  2882. [wiredfool]
  2883. - Add /usr/local include and library directories for freebsd #1613
  2884. [leforestier]
  2885. - Updated installation docs for new versions of dependencies #1611
  2886. [radarhere]
  2887. - Removed unrunnable test file #1610
  2888. [radarhere]
  2889. - Changed register calls to use format property #1608
  2890. [radarhere]
  2891. - Added field type constants to TiffTags #1596
  2892. [radarhere]
  2893. - Allow saving RowsPerStrip with libtiff #1594
  2894. [wiredfool]
  2895. - Enabled conversion to numpy array for HSV images #1578
  2896. [cartisan]
  2897. - Changed some urls in the docs to use https #1580
  2898. [hugovk]
  2899. - Removed logger.exception from ImageFile.py #1590
  2900. [radarhere]
  2901. - Removed warnings module check #1587
  2902. [radarhere]
  2903. - Changed arcs, chords and pie slices to use floats #1577
  2904. [radarhere]
  2905. - Update unit test asserts #1584, #1598
  2906. [radarhere]
  2907. - Fix command to invoke ghostscript for eps files #1478
  2908. [baumatron, radarhere]
  2909. - Consistent multiline text spacing #1574
  2910. [wiredfool, hugovk]
  2911. - Removed unused lines in BDFFontFile #1530
  2912. [radarhere]
  2913. - Changed ImageQt import of Image #1560
  2914. [radarhere, ericfrederich]
  2915. - Throw TypeError if no cursors were found in .cur file #1556
  2916. [radarhere]
  2917. - Fix crash in ImageTk.PhotoImage on win-amd64 #1553
  2918. [cgohlke]
  2919. - ExtraSamples tag should be a SHORT, not a BYTE #1555
  2920. [Nexuapex]
  2921. - Docs and code health fixes #1565 #1566 #1581 #1586 #1591 #1621
  2922. [radarhere]
  2923. - Updated freetype to 2.6.2 #1564
  2924. [radarhere]
  2925. - Updated WebP to 0.5.0 for Travis #1515 #1609
  2926. [radarhere]
  2927. - Fix missing 'version' key value in __array_interface__ #1519
  2928. [mattip]
  2929. - Replaced os.popen with subprocess.Popen to pilprint script #1523
  2930. [radarhere]
  2931. - Catch OverflowError in SpiderImagePlugin #1545
  2932. [radarhere, MrShark]
  2933. - Fix the definition of icc_profile in TiffTags #1539
  2934. [wiredfool]
  2935. - Remove old _imagingtiff.c and pilplus stuff #1499
  2936. [hugovk]
  2937. - Fix Exception when requiring jpeg #1501
  2938. [hansmosh]
  2939. - Dependency scripts for Debian and Ubuntu #1486
  2940. [wiredfool]
  2941. - Added Usage message to painter script #1482
  2942. [radarhere]
  2943. - Add tag info for iccprofile, fixes #1462. #1465
  2944. [wiredfool]
  2945. - Added some requirements for make release-test #1451
  2946. [wiredfool]
  2947. - Flatten tiff metadata value SAMPLEFORMAT to initial value #1467 (fixes #1466)
  2948. [wiredfool]
  2949. - Fix handling of pathlib in Image.save #1464 (fixes #1460)
  2950. [wiredfool]
  2951. - Make tests more robust #1469
  2952. [hugovk]
  2953. - Use correctly sized pointers for windows handle types #1458
  2954. [nu744]
  2955. 3.0.0 (2015-10-01)
  2956. ------------------
  2957. - Check flush method existence for file-like object #1398
  2958. [mrTable, radarhere]
  2959. - Added PDF multipage saving #1445
  2960. [radarhere]
  2961. - Removed deprecated code, Image.tostring, Image.fromstring, Image.offset, ImageDraw.setink, ImageDraw.setfill, ImageFileIO, ImageFont.FreeTypeFont and ImageFont.truetype ``file`` kwarg, ImagePalette private _make functions, ImageWin.fromstring and ImageWin.tostring #1343
  2962. [radarhere]
  2963. - Load more broken images #1428
  2964. [homm]
  2965. - Require zlib and libjpeg #1439
  2966. [wiredfool]
  2967. - Preserve alpha when converting from a QImage to a Pillow Image by using png instead of ppm #1429
  2968. [ericfrederich]
  2969. - Qt needs 32 bit aligned image data #1430
  2970. [ericfrederich]
  2971. - Tiff ImageFileDirectory rewrite #1419
  2972. [anntzer, wiredfool, homm]
  2973. - Removed spammy debug logging #1423
  2974. [wiredfool]
  2975. - Save as GiF89a with support for animation parameters #1384
  2976. [radarhere]
  2977. - Correct convert matrix docs #1426
  2978. [wiredfool]
  2979. - Catch TypeError in _getexif #1414
  2980. [radarhere, wiredfool]
  2981. - Fix for UnicodeDecodeError in TiffImagePlugin #1416
  2982. [bogdan199, wiredfool]
  2983. - Dedup code in image.open #1415
  2984. [wiredfool]
  2985. - Skip any number extraneous chars at the end of JPEG chunks #1337
  2986. [homm]
  2987. - Single threaded build for pypy3, refactor #1413
  2988. [wiredfool]
  2989. - Fix loading of truncated images with LOAD_TRUNCATED_IMAGES enabled #1366
  2990. [homm]
  2991. - Documentation update for concepts: bands #1406
  2992. [merriam]
  2993. - Add Solaris/SmartOS include and library directories #1356
  2994. [njones11]
  2995. - Improved handling of getink color #1387
  2996. [radarhere]
  2997. - Disable compiler optimizations for topalette and tobilevel functions for all msvc versions #1402 (fixes #1357)
  2998. [cgohlke]
  2999. - Skip ImageFont_bitmap test if _imagingft C module is not installed #1409
  3000. [homm]
  3001. - Add param documentation to ImagePalette #1381
  3002. [bwrsandman]
  3003. - Corrected scripts path #1407
  3004. [radarhere]
  3005. - Updated libtiff to 4.0.6 #1405, #1421
  3006. [radarhere]
  3007. - Updated Platform Support for Yosemite #1403
  3008. [radarhere]
  3009. - Fixed infinite loop on truncated file #1401
  3010. [radarhere]
  3011. - Check that images are L mode in ImageMorph methods #1400
  3012. [radarhere]
  3013. - In tutorial of pasting images, add to mask text #1389
  3014. [merriam]
  3015. - Style/health fixes #1391, #1397, #1417, #1418
  3016. [radarhere]
  3017. - Test on Python 3.5 dev and 3.6 nightly #1361
  3018. [hugovk]
  3019. - Fix fast rotate operations #1373
  3020. [radarhere]
  3021. - Added support for pathlib Path objects to open and save #1372
  3022. [radarhere]
  3023. - Changed register calls to use format property #1333
  3024. [radarhere]
  3025. - Added support for ImageGrab.grab to OS X #1367, #1443
  3026. [radarhere, hugovk]
  3027. - Fixed PSDraw stdout Python 3 compatibility #1365
  3028. [radarhere]
  3029. - Added Python 3.3 to AppVeyor #1363
  3030. [radarhere]
  3031. - Treat MPO with unknown header as base JPEG file #1350
  3032. [hugovk, radarhere]
  3033. - Added various tests #1330, #1344
  3034. [radarhere]
  3035. - More ImageFont tests #1327
  3036. [hugovk]
  3037. - Use logging instead of print #1207
  3038. [anntzer]
  3039. 2.9.0 (2015-07-01)
  3040. ------------------
  3041. - Added test for GimpPaletteFile #1324
  3042. [radarhere]
  3043. - Merged gifmaker script to allow saving of multi-frame GIF images #1320
  3044. [radarhere]
  3045. - Added is_animated property to multi-frame formats #1319
  3046. [radarhere]
  3047. - Fixed ValueError in Python 2.6 #1315 #1316
  3048. [cgohlke, radarhere]
  3049. - Fixed tox test script path #1308
  3050. [radarhere]
  3051. - Added width and height properties #1304
  3052. [radarhere]
  3053. - Update tiff and tk tcl 8.5 versions #1303
  3054. [radarhere, wiredfool]
  3055. - Add functions to convert: Image <-> QImage; Image <-> QPixmap #1217
  3056. [radarhere, rominf]
  3057. - Remove duplicate code in gifmaker script #1294
  3058. [radarhere]
  3059. - Multiline text in ImageDraw #1177
  3060. [allo-, radarhere]
  3061. - Automated Windows CI/build support #1278
  3062. [wiredfool]
  3063. - Removed support for Tk versions earlier than 8.4 #1288
  3064. [radarhere]
  3065. - Fixed polygon edge drawing #1255 (fixes #1252)
  3066. [radarhere]
  3067. - Check prefix length in _accept methods #1267
  3068. [radarhere]
  3069. - Register MIME type for BMP #1277
  3070. [coldmind]
  3071. - Adjusted ImageQt use of unicode() for 2/3 compatibility #1218
  3072. [radarhere]
  3073. - Identify XBM file created with filename including underscore #1230 (fixes #1229)
  3074. [hugovk]
  3075. - Copy image when saving in GifImagePlugin #1231 (fixes #718)
  3076. [radarhere]
  3077. - Removed support for FreeType 2.0 #1247
  3078. [radarhere]
  3079. - Added background saving to GifImagePlugin #1273
  3080. [radarhere]
  3081. - Provide n_frames attribute to multi-frame formats #1261
  3082. [anntzer, radarhere]
  3083. - Add duration and loop set to GifImagePlugin #1172, #1269
  3084. [radarhere]
  3085. - Ico files are little endian #1232
  3086. [wiredfool]
  3087. - Upgrade olefile from 0.30 to 0.42b #1226
  3088. [radarhere, decalage2]
  3089. - Setting transparency value to 0 when the tRNS contains only null byte(s) #1239
  3090. [juztin]
  3091. - Separated out feature checking from selftest #1233
  3092. [radarhere]
  3093. - Style/health fixes
  3094. [radarhere]
  3095. - Update WebP from 0.4.1 to 0.4.3 #1235
  3096. [radarhere]
  3097. - Release GIL during image load (decode) #1224
  3098. [lkesteloot]
  3099. - Added icns save #1185
  3100. [radarhere]
  3101. - Fix putdata memory leak #1196
  3102. [benoit-pierre]
  3103. - Keep user-specified ordering of icon sizes #1193
  3104. [karimbahgat]
  3105. - Tiff: allow writing floating point tag values #1113
  3106. [bpedersen2]
  3107. 2.8.2 (2015-06-06)
  3108. ------------------
  3109. - Bug fix: Fixed Tiff handling of bad EXIF data
  3110. [radarhere]
  3111. 2.8.1 (2015-04-02)
  3112. ------------------
  3113. - Bug fix: Catch struct.error on invalid JPEG, fixes #1163. #1165
  3114. [wiredfool, hugovk]
  3115. 2.8.0 (2015-04-01)
  3116. ------------------
  3117. - Fix 32-bit BMP loading (RGBA or RGBX) #1125
  3118. [artscoop]
  3119. - Fix UnboundLocalError in ImageFile #1131
  3120. [davarisg]
  3121. - Re-enable test image caching #982
  3122. [hugovk, homm]
  3123. - Fix: Cannot identify EPS images #1152 (fixes #1104)
  3124. [hugovk]
  3125. - Configure setuptools to run nosetests, fixes #729
  3126. [aclark4life]
  3127. - Style/health fixes
  3128. [radarhere, hugovk]
  3129. - Add support for HTTP response objects to Image.open() #1151
  3130. [mfitzp]
  3131. - Improve reference docs for PIL.ImageDraw.Draw.pieslice() #1145
  3132. [audreyr]
  3133. - Added copy method font_variant() and accessible properties to truetype() #1123
  3134. [radarhere]
  3135. - Fix ImagingEffectNoise #1128
  3136. [hugovk]
  3137. - Remove unreachable code #1126
  3138. [hugovk]
  3139. - Let Python do the endian stuff + tests #1121
  3140. [amoibos, radarhere]
  3141. - Fix webp decode memory leak #1114
  3142. [benoit-pierre]
  3143. - Fast path for opaque pixels in RGBa unpacker #1088
  3144. [bgilbert]
  3145. - Enable basic support for 'RGBa' raw encoding/decoding #1096
  3146. [immerrr]
  3147. - Fix pickling L mode images with no palette, #1095
  3148. [hugovk]
  3149. - iPython display hook #1091
  3150. [wiredfool]
  3151. - Adjust buffer size when quality=keep #1079 (fixes #148 again)
  3152. [wiredfool]
  3153. - Fix for corrupted bitmaps embedded in truetype fonts #1072
  3154. [jackyyf, wiredfool]
  3155. 2.7.0 (2015-01-01)
  3156. ------------------
  3157. - Split Sane into a separate repo: https://github.com/python-pillow/Sane
  3158. [hugovk]
  3159. - Look for OS X and Linux fonts in common places #1054
  3160. [charleslaw]
  3161. - Fix CVE-2014-9601, potential PNG decompression DOS #1060
  3162. [wiredfool]
  3163. - Use underscores, not spaces, in TIFF tag kwargs #1044, #1058
  3164. [anntzer, hugovk]
  3165. - Update PSDraw for Python3, add tests #1055
  3166. [hugovk]
  3167. - Use Bicubic filtering by default for thumbnails. Don't use Jpeg Draft mode for thumbnails #1029
  3168. [homm]
  3169. - Fix MSVC compiler error: Use Py_ssize_t instead of ssize_t #1051
  3170. [cgohlke]
  3171. - Fix compiler error: MSVC needs variables defined at the start of the block #1048
  3172. [cgohlke]
  3173. - The GIF Palette optimization algorithm is only applicable to mode='P' or 'L' #993
  3174. [moriyoshi]
  3175. - Use PySide as an alternative to PyQt4/5 #1024
  3176. [holg]
  3177. - Replace affine-based im.resize implementation with convolution-based im.stretch #997
  3178. [homm]
  3179. - Replace Gaussian Blur implementation with iterated fast box blur. #961 Note: Radius parameter is interpreted differently than before.
  3180. [homm]
  3181. - Better docs explaining import _imaging failure #1016, build #1017, mode #1018, PyAccess, PixelAccess objects #1019 Image.quantize #1020 and Image.save #1021
  3182. [wiredfool]
  3183. - Fix for saving TIFF image into an io.BytesIO buffer #1011
  3184. [mfergie]
  3185. - Fix antialias compilation on debug versions of Python #1010
  3186. [wiredfool]
  3187. - Fix for Image.putdata segfault #1009
  3188. [wiredfool]
  3189. - Ico save, additional tests #1007
  3190. [exherb]
  3191. - Use PyQt4 if it has already been imported, otherwise prefer PyQt5 #1003
  3192. [AurelienBallier]
  3193. - Speedup resample implementation up to 2.5 times #977
  3194. [homm]
  3195. - Speed up rotation by using cache aware loops, added transpose to rotations #994
  3196. [homm]
  3197. - Fix Bicubic interpolation #970
  3198. [homm]
  3199. - Support for 4-bit grayscale TIFF images #980
  3200. [hugovk]
  3201. - Updated manifest #957
  3202. [wiredfool]
  3203. - Fix PyPy 2.4 regression #958
  3204. [wiredfool]
  3205. - Webp Metadata Skip Test comments #954
  3206. [wiredfool]
  3207. - Fixes for things rpmlint complains about #942
  3208. [manisandro]
  3209. 2.6.2 (2015-01-01)
  3210. ------------------
  3211. - Fix CVE-2014-9601, potential PNG decompression DOS #1060
  3212. [wiredfool]
  3213. - Fix Regression in PyPy 2.4 in streamio #958
  3214. [wiredfool]
  3215. 2.6.1 (2014-10-11)
  3216. ------------------
  3217. - Fix SciPy regression in Image.resize #945
  3218. [wiredfool]
  3219. - Fix manifest to include all test files.
  3220. [aclark4life]
  3221. 2.6.0 (2014-10-01)
  3222. ------------------
  3223. - Relax precision of ImageDraw tests for x86, GimpGradient for PPC #930
  3224. [wiredfool]
  3225. 2.6.0-rc1 (2014-09-29)
  3226. ----------------------
  3227. - Use redistributable image for testing #884
  3228. [hugovk]
  3229. - Use redistributable ICC profiles for testing, skip if not available #923
  3230. [wiredfool]
  3231. - Additional documentation for JPEG info and save options #922
  3232. [wiredfool]
  3233. - Fix JPEG Encoding memory leak when exif or qtables were specified #921
  3234. [wiredfool]
  3235. - Image.tobytes() and Image.tostring() documentation update #916 #917
  3236. [mgedmin]
  3237. - On Windows, do not execute convert.exe without specifying path #912
  3238. [cgohlke]
  3239. - Fix msvc build error #911
  3240. [cgohlke]
  3241. - Fix for handling P + transparency -> RGBA conversions #904
  3242. [wiredfool]
  3243. - Retain alpha in ImageEnhance operations #909
  3244. [wiredfool]
  3245. - Jpeg2k Decode/encode memory leak fix #898
  3246. [joshware, wiredfool]
  3247. - EpsFilePlugin Speed improvements #886
  3248. [wiredfool, karstenw]
  3249. - Don't resize if already the right size #892
  3250. [radarhere]
  3251. - Fix for reading multipage TIFFs #885
  3252. [kostrom, wiredfool]
  3253. - Correctly handle saving gray and CMYK JPEGs with quality=keep #857
  3254. [etienned]
  3255. - Correct duplicate Tiff Metadata and Exif tag values
  3256. [hugovk]
  3257. - Windows fixes #871
  3258. [wiredfool]
  3259. - Fix TGA files with image ID field #856
  3260. [megabuz]
  3261. - Fixed wrong P-mode of small, unoptimized L-mode GIF #843
  3262. [uvNikita]
  3263. - Fixed CVE-2014-3598, a DOS in the Jpeg2KImagePlugin
  3264. [Andrew Drake]
  3265. - Fixed CVE-2014-3589, a DOS in the IcnsImagePlugin
  3266. [Andrew Drake]
  3267. - setup.py: Close open file handle before deleting #844
  3268. [divergentdave]
  3269. - Return Profile with Transformed Images #837
  3270. [wiredfool]
  3271. - Changed docstring to refer to the correct function #836
  3272. [MatMoore]
  3273. - Adding coverage support for C code tests #833
  3274. [wiredfool]
  3275. - PyPy performance improvements #821
  3276. [wiredfool]
  3277. - Added support for reading MPO files #822
  3278. [Feneric]
  3279. - Added support for encoding and decoding iTXt chunks #818
  3280. [dolda2000]
  3281. - HSV Support #816
  3282. [wiredfool]
  3283. - Removed unusable ImagePalette.new()
  3284. [hugovk]
  3285. - Fix Scrambled XPM #808
  3286. [wiredfool]
  3287. - Doc cleanup
  3288. [wiredfool]
  3289. - Fix ``ImageStat`` docs #796
  3290. [akx]
  3291. - Added docs for ExifTags #794
  3292. [Wintermute3]
  3293. - More tests for CurImagePlugin, DcxImagePlugin, Effects.c, GimpGradientFile, ImageFont, ImageMath, ImagePalette, IptcImagePlugin, SpiderImagePlugin, SgiImagePlugin, XpmImagePlugin and _util
  3294. [hugovk]
  3295. - Fix return value of FreeTypeFont.textsize() does not include font offsets #784
  3296. [tk0miya]
  3297. - Fix dispose calculations for animated GIFs #765
  3298. [larsjsol]
  3299. - Added class checking to Image __eq__ function #775
  3300. [radarhere, hugovk]
  3301. - Test PalmImagePlugin and method to skip known bad tests #776
  3302. [hugovk, wiredfool]
  3303. 2.5.3 (2014-08-18)
  3304. ------------------
  3305. - Fixed CVE-2014-3598, a DOS in the Jpeg2KImagePlugin (backport)
  3306. [Andrew Drake]
  3307. 2.5.2 (2014-08-13)
  3308. ------------------
  3309. - Fixed CVE-2014-3589, a DOS in the IcnsImagePlugin (backport)
  3310. [Andrew Drake]
  3311. 2.5.1 (2014-07-10)
  3312. ------------------
  3313. - Fixed install issue if Multiprocessing.Pool is not available
  3314. [wiredfool]
  3315. - 32bit mult overflow fix #782
  3316. [wiredfool]
  3317. 2.5.0 (2014-07-01)
  3318. ------------------
  3319. - Imagedraw rewrite #737
  3320. [terseus, wiredfool]
  3321. - Add support for multithreaded test execution #755
  3322. [wiredfool]
  3323. - Prevent shell injection #748
  3324. [mbrown1413, wiredfool]
  3325. - Support for Resolution in BMP files #734
  3326. [gcq]
  3327. - Fix error in setup.py for Python 3 #744
  3328. [matthew-brett]
  3329. - Pyroma fix and add Python 3.4 to setup metadata #742
  3330. [wirefool]
  3331. - Top level flake8 fixes #741
  3332. [aclark4life]
  3333. - Remove obsolete Animated Raster Graphics (ARG) support #736
  3334. [hugovk]
  3335. - Fix test_imagedraw failures #727
  3336. [cgohlke]
  3337. - Fix AttributeError: class Image has no attribute 'DEBUG' #726
  3338. [cgohlke]
  3339. - Fix msvc warning: 'inline' : macro redefinition #725
  3340. [cgohlke]
  3341. - Cleanup #654
  3342. [dvska, hugovk, wiredfool]
  3343. - 16-bit monochrome support for JPEG2000 #730
  3344. [videan42]
  3345. - Fixed ImagePalette.save
  3346. [brightpisces]
  3347. - Support JPEG qtables #677
  3348. [csinchok]
  3349. - Add binary morphology addon
  3350. [dov, wiredfool]
  3351. - Decompression bomb protection #674
  3352. [hugovk]
  3353. - Put images in a single directory #708
  3354. [hugovk]
  3355. - Support OpenJpeg 2.1 #681
  3356. [al45tair, wiredfool]
  3357. - Remove unistd.h #include for all platforms #704
  3358. [wiredfool]
  3359. - Use unittest for tests
  3360. [hugovk]
  3361. - ImageCms fixes
  3362. [hugovk]
  3363. - Added more ImageDraw tests
  3364. [hugovk]
  3365. - Added tests for Spider files
  3366. [hugovk]
  3367. - Use libtiff to write any compressed tiff files #669
  3368. [wiredfool]
  3369. - Support for pickling Image objects
  3370. [hugovk]
  3371. - Fixed resolution handling for EPS thumbnails #619
  3372. [eliempje]
  3373. - Fixed rendering of some binary EPS files (Issue #302)
  3374. [eliempje]
  3375. - Rename variables not to use built-in function names #670
  3376. [hugovk]
  3377. - Ignore junk JPEG markers
  3378. [hugovk]
  3379. - Change default interpolation for Image.thumbnail to Image.ANTIALIAS
  3380. [hugovk]
  3381. - Add tests and fixes for saving PDFs
  3382. [hugovk]
  3383. - Remove transparency resource after P->RGBA conversion
  3384. [hugovk]
  3385. - Clean up preprocessor cruft for Windows #652
  3386. [CounterPillow]
  3387. - Adjust Homebrew freetype detection logic #656
  3388. [jacknagel]
  3389. - Added Image.close, context manager support
  3390. [wiredfool]
  3391. - Added support for 16 bit PGM files
  3392. [wiredfool]
  3393. - Updated OleFileIO to version 0.30 from upstream #618
  3394. [hugovk]
  3395. - Added support for additional TIFF floating point format
  3396. [Hijackal]
  3397. - Have the tempfile use a suffix with a dot
  3398. [wiredfool]
  3399. - Fix variable name used for transparency manipulations #604
  3400. [nijel]
  3401. 2.4.0 (2014-04-01)
  3402. ------------------
  3403. - Indexed Transparency handled for conversions between L, RGB, and P modes #574 (fixes #510)
  3404. [wiredfool]
  3405. - Conversions enabled from RGBA->P #574 (fixes #544)
  3406. [wiredfool]
  3407. - Improved icns support #565
  3408. [al45tair]
  3409. - Fix libtiff leaking open files #580 (fixes #526)
  3410. [wiredfool]
  3411. - Fixes for Jpeg encoding in Python 3 #578 (fixes #577)
  3412. [wiredfool]
  3413. - Added support for JPEG 2000 #547
  3414. [al45tair]
  3415. - Add more detailed error messages to Image.py #566
  3416. [larsmans]
  3417. - Avoid conflicting _expand functions in PIL & MINGW, fixes #538
  3418. [aclark4life]
  3419. - Merge from Philippe Lagadec’s OleFileIO_PL fork #512
  3420. [vadmium]
  3421. - Fix ImageColor.getcolor #534
  3422. [homm]
  3423. - Make ICO files work with the ImageFile.Parser interface #525 (fixes #522)
  3424. [wiredfool]
  3425. - Handle 32bit compiled python on 64bit architecture #521
  3426. [choppsv1]
  3427. - Fix support for characters >128 using .pcf or .pil fonts in Py3k #517 (fixes #505)
  3428. [wiredfool]
  3429. - Skip CFFI test earlier if it's not installed #516
  3430. [wiredfool]
  3431. - Fixed opening and saving odd sized .pcx files #535 (fixes #523)
  3432. [wiredfool]
  3433. - Fixed palette handling when converting from mode P->RGB->P
  3434. [d-schmidt]
  3435. - Fixed saving mode P image as a PNG with transparency = palette color 0
  3436. [d-schmidt]
  3437. - Improve heuristic used when saving progressive and optimized JPEGs with high quality values #504
  3438. [e98cuenc]
  3439. - Fixed DOS with invalid palette size or invalid image size in BMP file
  3440. [wiredfool]
  3441. - Added support for BMP version 4 and 5
  3442. [eddwardo, wiredfool]
  3443. - Fix segfault in getfont when passed a memory resident font
  3444. [wiredfool]
  3445. - Fix crash on Saving a PNG when icc-profile is None #496
  3446. [brutasse]
  3447. - Cffi+Python implementation of the PixelAccess object
  3448. [wiredfool]
  3449. - PixelAccess returns unsigned ints for I16 mode
  3450. [wiredfool]
  3451. - Minor patch on booleans + Travis #474
  3452. [sciunto]
  3453. - Look in multiarch paths in GNU platforms #511
  3454. [pinotree]
  3455. - Add arch support for pcc64, s390, s390x, armv7l, aarch64 #475
  3456. [manisandro]
  3457. - Add arch support for ppc
  3458. [wiredfool]
  3459. - Correctly quote file names for WindowsViewer command
  3460. [cgohlke]
  3461. - Prefer homebrew freetype over X11 freetype (but still allow both) #466
  3462. [dmckeone]
  3463. 2.3.2 (2014-08-13)
  3464. ------------------
  3465. - Fixed CVE-2014-3589, a DOS in the IcnsImagePlugin (backport)
  3466. [Andrew Drake]
  3467. 2.3.1 (2014-03-14)
  3468. ------------------
  3469. - Fix insecure use of tempfile.mktemp (CVE-2014-1932 CVE-2014-1933)
  3470. [wiredfool]
  3471. 2.3.0 (2014-01-01)
  3472. ------------------
  3473. - Stop leaking filename parameter passed to getfont #459
  3474. [jpharvey]
  3475. - Report availability of LIBTIFF during setup and selftest
  3476. [cgohlke]
  3477. - Fix msvc build error C1189: "No Target Architecture" #460
  3478. [cgohlke]
  3479. - Fix memory leak in font_getsize
  3480. [wiredfool]
  3481. - Correctly prioritize include and library paths #442
  3482. [ohanar]
  3483. - Image.point fixes for numpy.array and docs #441
  3484. [wiredfool]
  3485. - Save the transparency header by default for PNGs #424
  3486. [wiredfool]
  3487. - Support for PNG tRNS header when converting from RGB->RGBA #423
  3488. [wiredfool]
  3489. - PyQT5 Support #418
  3490. [wiredfool]
  3491. - Updates for saving color tiffs w/compression using libtiff #417
  3492. [wiredfool]
  3493. - 2gigapix image fixes and redux
  3494. [wiredfool]
  3495. - Save arbitrary tags in Tiff image files #369
  3496. [wiredfool]
  3497. - Quote filenames and title before using on command line #398
  3498. [tmccombs]
  3499. - Fixed Viewer.show to return properly #399
  3500. [tmccombs]
  3501. - Documentation fixes
  3502. [wiredfool]
  3503. - Fixed memory leak saving images as webp when webpmux is available #429
  3504. [cezarsa]
  3505. - Fix compiling with FreeType 2.5.1 #427
  3506. [stromnov]
  3507. - Adds directories for NetBSD #411
  3508. [deepy]
  3509. - Support RGBA TIFF with missing ExtraSamples tag #393
  3510. [cgohlke]
  3511. - Lossless WEBP Support #390
  3512. [wiredfool]
  3513. - Take compression as an option in the save call for tiffs #389
  3514. [wiredfool]
  3515. - Add support for saving lossless WebP. Just pass 'lossless=True' to save() #386
  3516. [liftoff]
  3517. - LCMS support upgraded from version 1 to version 2 #380 (fixes #343)
  3518. [wiredfool]
  3519. - Added more raw decoder 16 bit pixel formats #379
  3520. [svanheulen]
  3521. - Document remaining Image* modules listed in PIL handbook
  3522. [irksep]
  3523. - Document ImageEnhance, ImageFile, ImageFilter, ImageFont, ImageGrab, ImageMath, and ImageOps
  3524. [irksep]
  3525. - Port and update docs for Image, ImageChops, ImageColor, and ImageDraw
  3526. [irksep]
  3527. - Move or copy content from README.rst to docs/
  3528. [irksep]
  3529. - Respect CFLAGS/LDFLAGS when searching for headers/libs
  3530. [iElectric]
  3531. - Port PIL Handbook tutorial and appendices
  3532. [irksep]
  3533. - Alpha Premultiplication support for transform and resize #364
  3534. [wiredfool]
  3535. - Fixes to make Pypy 2.1.0 work on Ubuntu 12.04/64 #359
  3536. [wiredfool]
  3537. 2.2.2 (2013-12-11)
  3538. ------------------
  3539. - Fix compiling with FreeType 2.5.1 #427
  3540. [stromnov]
  3541. 2.2.1 (2013-10-02)
  3542. ------------------
  3543. - Error installing Pillow 2.2.0 on Mac OS X (due to hard dep on brew) #357 (fixes #356)
  3544. [wiredfool]
  3545. 2.2.0 (2013-10-02)
  3546. ------------------
  3547. - Bug in image transformations resulting from uninitialized memory #348 (fixes #254)
  3548. [nikmolnar]
  3549. - Fix for encoding of b_whitespace #346 (similar to closed issue #272)
  3550. [mhogg]
  3551. - Add numpy array interface support for 16 and 32 bit integer modes #347 (fixes #273)
  3552. [cgohlke]
  3553. - Partial fix for #290: Add preliminary support for TIFF tags.
  3554. [wiredfool]
  3555. - Fix #251 and #326: circumvent classification of pngtest_bad.png as malware
  3556. [cgohlke]
  3557. - Add typedef uint64_t for MSVC #339
  3558. [cgohlke]
  3559. - setup.py: better support for C_INCLUDE_PATH, LD_RUN_PATH, etc. #336 (fixes #329)
  3560. [nu774]
  3561. - _imagingcms.c: include windef.h to fix build issue on MSVC #335 (fixes #328)
  3562. [nu774]
  3563. - Automatically discover homebrew include/ and lib/ paths on OS X #330
  3564. [donspaulding]
  3565. - Fix bytes which should be bytearray #325
  3566. [manisandro]
  3567. - Add respective paths for C_INCLUDE_PATH, LD_RUN_PATH (rpath) to build
  3568. if specified as environment variables #324
  3569. [seanupton]
  3570. - Fix #312 + gif optimize improvement
  3571. [d-schmidt]
  3572. - Be more tolerant of tag read failures #320
  3573. [ericbuehl]
  3574. - Catch truncated zTXt errors #321 (fixes #318)
  3575. [vytisb]
  3576. - Fix IOError when saving progressive JPEGs #313
  3577. [e98cuenc]
  3578. - Add RGBA support to ImageColor #309
  3579. [yoavweiss]
  3580. - Test for ``str``, not ``"utf-8"`` #306 (fixes #304)
  3581. [mjpieters]
  3582. - Fix missing import os in _util.py #303
  3583. [mnowotka]
  3584. - Added missing exif tags #300
  3585. [freyes]
  3586. - Fail on all import errors #298, #299 (fixes #297)
  3587. [macfreek, wiredfool]
  3588. - Fixed Windows fallback (wasn't using correct file in Windows fonts) #295
  3589. [lmollea]
  3590. - Moved ImageFile and ImageFileIO comments to docstrings #293
  3591. [freyes]
  3592. - Restore compatibility with ISO C #289
  3593. [cgohlke]
  3594. - Use correct format character for C int type #288
  3595. [cgohlke]
  3596. - Allocate enough memory to hold pointers in encode.c #287
  3597. [cgohlke]
  3598. - Fillorder double shuffling bug when FillOrder ==2 and decoding using libtiff #284 (fixes #279)
  3599. [wiredfool]
  3600. - Moved Image module comments to docstrings.
  3601. [freyes]
  3602. - Add 16-bit TIFF support #277 (fixes #274)
  3603. [wiredfool]
  3604. - Ignore high ascii characters in string.whitespace #276 (fixes #272)
  3605. [wiredfool]
  3606. - Added clean/build to tox to make it behave like Travis #275
  3607. [freyes]
  3608. - Adding support for metadata in webp images #271
  3609. [heynemann]
  3610. 2.1.0 (2013-07-02)
  3611. ------------------
  3612. - Add /usr/bin/env python shebangs to all scripts in /Scripts #197
  3613. [mgorny]
  3614. - Add several TIFF decoders and encoders #268
  3615. [megabuz]
  3616. - Added support for alpha transparent webp images.
  3617. - Adding Python 3 support for StringIO.
  3618. - Adding Python3 basestring compatibility without changing basestring.
  3619. - Fix webp encode errors on win-amd64 #259
  3620. [cgohlke]
  3621. - Better fix for ZeroDivisionError in ImageOps.fit for image.size height is 1 #267
  3622. [chrispbailey]
  3623. - Better support for ICO images.
  3624. - Changed PY_VERSION_HEX #190 (fixes #166)
  3625. - Changes to put everything under the PIL namespace #191
  3626. [wiredfool]
  3627. - Changing StringIO to BytesIO.
  3628. - Cleanup whitespace.
  3629. [Arfrever]
  3630. - Don't skip 'import site' on initialization when running tests for inplace builds.
  3631. [cgohlke]
  3632. - Enable warnings for test suite #227
  3633. [wiredfool]
  3634. - Fix for ZeroDivisionError in ImageOps.fit for image.size == (1,1) #255
  3635. [pterk]
  3636. - Fix for if isinstance(filter, collections.Callable) crash. Python bug #7624 on <2.6.6
  3637. - Remove double typedef declaration #194 (fixes #193)
  3638. [evertrol]
  3639. - Fix msvc compile errors (#230).
  3640. - Fix rendered characters have been chipped for some TrueType fonts
  3641. [tk0miya]
  3642. - Fix usage of pilfont.py script #184
  3643. [fabiomcosta]
  3644. - Fresh start for docs, generated by sphinx-apidoc.
  3645. - Introduce --enable-x and fail if it is given and x is not available.
  3646. - Partial work to add a wrapper for WebPGetFeatures to correctly support #220 (fixes #204)
  3647. - Significant performance improvement of ``alpha_composite`` function #156
  3648. [homm]
  3649. - Support explicitly disabling features via --disable-* options #240
  3650. [mgorny]
  3651. - Support selftest.py --installed, fixes #263
  3652. - Transparent WebP Support #220 (fixes #204)
  3653. [euangoddard, wiredfool]
  3654. - Use PyCapsule for py3.1 #238 (fixes #237)
  3655. [wiredfool]
  3656. - Workaround for: https://bugs.python.org/issue16754 in 3.2.x < 3.2.4 and 3.3.0.
  3657. 2.0.0 (2013-03-15)
  3658. ------------------
  3659. .. Note:: Special thanks to Christoph Gohlke and Eric Soroos for assisting with a pre-PyCon 2013 release!
  3660. - Many other bug fixes and enhancements by many other people.
  3661. - Add Python 3 support. (Pillow >= 2.0.0 supports Python 2.6, 2.7, 3.2, 3.3. Pillow < 2.0.0 supports Python 2.4, 2.5, 2.6, 2.7.)
  3662. [fluggo]
  3663. - Add PyPy support (experimental, please see #67)
  3664. - Add WebP support #96
  3665. [lqs]
  3666. - Add Tiff G3/G4 support (experimental)
  3667. [wiredfool]
  3668. - Backport PIL's PNG/Zip improvements #95, #97
  3669. [olt]
  3670. - Various 64-bit and Windows fixes.
  3671. [cgohlke]
  3672. - Add testing suite.
  3673. [cgohlke, fluggo]
  3674. - Added support for PNG images with transparency palette.
  3675. [d-schmidt]
  3676. 1.7.8 (2012-11-01)
  3677. ------------------
  3678. - Removed doctests.py that made tests of other packages fail.
  3679. [thomasdesvenain]
  3680. - Fix opening psd files with RGBA layers when A mode is not of type 65535 but 3.
  3681. Fixes #3
  3682. [thomasdesvenain]
  3683. 1.7.7 (2012-04-04)
  3684. ------------------
  3685. - UNDEF more types before including windows headers
  3686. [mattip]
  3687. 1.7.6 (2012-01-20)
  3688. ------------------
  3689. - Bug fix: freetype not found on Mac OS X with case-sensitive filesystem
  3690. [gjo]
  3691. - Bug fix: Backport fix to split() after open() (regression introduced in PIL 1.1.7).
  3692. [sfllaw]
  3693. 1.7.5 (2011-09-07)
  3694. ------------------
  3695. - Fix for sys.platform = "linux3"
  3696. [blueyed]
  3697. - Package cleanup and additional documentation
  3698. [aclark4life]
  3699. 1.7.4 (2011-07-21)
  3700. ------------------
  3701. - Fix brown bag release
  3702. [aclark4life]
  3703. 1.7.3 (2011-07-20)
  3704. ------------------
  3705. - Fix : resize need int values, append int conversion in thumbnail method
  3706. [harobed]
  3707. 1.7.2 (2011-06-02)
  3708. ------------------
  3709. - Bug fix: Python 2.4 compat
  3710. [aclark4life]
  3711. 1.7.1 (2011-05-31)
  3712. ------------------
  3713. - More multi-arch support
  3714. [SteveM, regebro, barry, aclark4life]
  3715. 1.7.0 (2011-05-27)
  3716. ------------------
  3717. - Add support for multi-arch library directory /usr/lib/x86_64-linux-gnu
  3718. [aclark4life]
  3719. 1.6 (12/01/2010)
  3720. ----------------
  3721. - Bug fix: /usr/x11/include should be added to include_dirs not library_dirs
  3722. [elro]
  3723. - Doc fixes
  3724. [aclark4life]
  3725. 1.5 (11/28/2010)
  3726. ----------------
  3727. - Module and package fixes
  3728. [aclark4life]
  3729. 1.4 (11/28/2010)
  3730. ----------------
  3731. - Doc fixes
  3732. [aclark4life]
  3733. 1.3 (11/28/2010)
  3734. ----------------
  3735. - Add support for /lib64 and /usr/lib64 library directories on Linux
  3736. [aclark4life]
  3737. - Doc fixes
  3738. [aclark4life]
  3739. 1.2 (08/02/2010)
  3740. ----------------
  3741. - On OS X also check for freetype2 in the X11 path
  3742. [jezdez]
  3743. - Doc fixes
  3744. [aclark4life]
  3745. 1.1 (07/31/2010)
  3746. ----------------
  3747. - Removed setuptools_hg requirement
  3748. [aclark4life]
  3749. - Doc fixes
  3750. [aclark4life]
  3751. 1.0 (07/30/2010)
  3752. ----------------
  3753. - Remove support for ``import Image``. ``from PIL import Image`` now required.
  3754. - Forked PIL based on `Chris McDonough and Hanno Schlichting's setuptools compatible re-packaging <https://dist.plone.org/thirdparty/PIL-1.1.7.tar.gz>`_
  3755. [aclark4life]
  3756. Pre-fork
  3757. ========
  3758. 0.2b5-1.1.7
  3759. -----------
  3760. ::
  3761. -*- coding: utf-8 -*-
  3762. The Python Imaging Library
  3763. $Id$
  3764. ACKNOWLEDGEMENTS: PIL wouldn't be what it is without the help of:
  3765. David Ascher, Phil Austin, Douglas Bagnall, Larry Bates, Anthony
  3766. Baxter, William Baxter, Denis Benoit, Jan Blom, Duncan Booth, Alexey
  3767. Borzenkov, Jeff Breidenbach, Roger Burnham, Zac Burns, Gene Cash,
  3768. Kevin Cazabon, Fred Clare, Greg Coats, Chris Cogdon, Greg Couch, Bill
  3769. Crutchfield, Abel Deuring, Tim Docker, Fred Drake, Graham Dumpleton,
  3770. Matthew Ellis, Eric Etheridge, Daniel Fetchinson, Robin Friedrich,
  3771. Pier Paolo Glave, Federico Di Gregorio, Markus Gritsch, Daniel
  3772. Haertle, Greg Hamilton, Mark Hammond, Bernhard Herzog, Rob Hooft, Bob
  3773. Ippolito, Jack Jansen, Bill Janssen, Edward Jones, Richard Jones,
  3774. Håkan Karlsson, Robert Kern, David Kirtley, Bob Klimek, Matthias
  3775. Klose, Andrew Kuchling, Magnus Källström, Victor Lacina, Ben Last,
  3776. Hamish Lawson, Cesare Leonardi, Andrew MacIntyre, Jan Matejek, Naveen
  3777. Michaud-Agrawal, Gordon McMillan, Skip Montanaro, Fredrik Nehr,
  3778. Russell Nelson, Luciano Nocera, Travis Oliphant, Piet van Oostrum,
  3779. Richard Oudkerk, Paul Pharr, Andres Polit, Conrado Porto Lopes Gouvêa,
  3780. Eric Raymond, Victor Reijs, Bertil Reinhammar, Nicholas Riley, Don
  3781. Rozenberg, Toby Sargeant, Barry Scott, Les Schaffer, Joel Shprentz,
  3782. Klamer Shutte, Gene Skonicki, Niki Spahiev, D. Alan Stewart, Perry
  3783. Stoll, Paul Svensson, Ulrik Svensson, Miki Tebeka, Michael van
  3784. Tellingen, Ivan Tkatchev, Dan Torop, Adam Twardoch, Rune Uhlin, Dmitry
  3785. Vasiliev, Sasha Voynow, Charles Waldman, Collin Winter, Dan Wolfe,
  3786. Ka-Ping Yee, and many others (if your name should be on this list, let
  3787. me know.)
  3788. 1.1.6 to 1.1.7
  3789. --------------
  3790. This section may not be fully complete. For changes since this file
  3791. was last updated, see the repository revision history:
  3792. http://svn.effbot.org/public/pil/
  3793. 1.1.7 final
  3794. -----------
  3795. - Set GIF loop info property to the number of iterations if a NETSCAPE
  3796. loop extension is present, instead of always setting it to 1 (from
  3797. Valentino Volonghi).
  3798. 1.1.7c1
  3799. -------
  3800. - Improved PNG compression (from Alexey Borzenkov).
  3801. - Read interlaced PNG files (from Conrado Porto Lopes Gouvêa)
  3802. - Added various TGA improvements from Alexey Borzenkov, including
  3803. support for specifying image orientation.
  3804. - Bumped block threshold to 16 megabytes, made size estimation a bit
  3805. more accurate. This speeds up allocation of large images.
  3806. - Fixed rounding error in ImagingDrawWideLine.
  3807. "gormish" writes: ImagingDrawWideLine() in Draw.c has a bug in every
  3808. version I've seen, which leads to different width lines depending on
  3809. the order of the points in the line. This is especially bad at some
  3810. angles where a 'width=2' line can completely disappear.
  3811. - Added support for RGBA mode to the SGI module (based on code by
  3812. Karsten Hiddemann).
  3813. - Handle repeated IPTC tags (adapted from a patch by Eric Bruning).
  3814. Eric writes: According to the specification, some IPTC tags can be
  3815. repeated, e.g., tag 2:25 (keywords). PIL 1.1.6 only retained the last
  3816. instance of that tag. Below is a patch to store all tags. If there are
  3817. multiple tag instances, they are stored in a (python) list. Single tag
  3818. instances remain as strings.
  3819. - Fixed potential crash in ImageFilter for small target images
  3820. (reported by Zac Burns and Daniel Fetchinson).
  3821. - Use BMP instead of JPEG as temporary show format on Mac OS X.
  3822. - Fixed putpixel/new for I;16 with colors > 255.
  3823. - Added integer power support to ImagingMath.
  3824. - Added limited support for I;16L mode (explicit little endian).
  3825. - Moved WMF support into Image.core; enable WMF rendering by default
  3826. if renderer is available.
  3827. - Mark the ARG plugin as obsolete.
  3828. - Added version query mechanism to ImageCms and ImageFont, for
  3829. debugging.
  3830. - Added (experimental) ImageCms function for fetching the ICC profile
  3831. for the current display (currently Windows only).
  3832. Added HWND/HDC support to ImageCms.get_display_profile().
  3833. - Added WMF renderer (Windows only).
  3834. - Added ImagePointHandler and ImageTransformHandler mixins; made
  3835. ImageCmsTransform work with im.point.
  3836. - Fixed potential endless loop in the XVThumbnail reader (from Nikolai
  3837. Ugelvik).
  3838. - Added Kevin Cazabon's pyCMS package.
  3839. The C code has been moved to _imagingcms.c, the Python interface
  3840. module is installed as PIL.ImageCMS.
  3841. Added support for in-memory ICC profiles.
  3842. Unified buildTransform and buildTransformFromOpenProfiles.
  3843. The profile can now be either a filename, a profile object, or a
  3844. file-like object containing an in-memory profile.
  3845. Additional fixes from Florian Böch:
  3846. Very nice - it just needs LCMS flags support so we can use black
  3847. point compensation and softproofing :) See attached patches. They
  3848. also fix a naming issue which could cause confusion - display
  3849. profile (ImageCms wording) actually means proof profile (lcms
  3850. wording), so I changed variable names and docstrings where
  3851. applicable. Patches are tested under Python 2.6.
  3852. - Improved support for layer names in PSD files (from Sylvain Baubeau)
  3853. Sylvain writes: I needed to be able to retrieve the names of the
  3854. layers in a PSD files. But PsdImagePlugin.py didn't do the job so I
  3855. wrote this very small patch.
  3856. - Improved RGBA support for ImageTk for 8.4 and newer (from Con
  3857. Radchenko).
  3858. This replaces the slow run-length based encoding model with true
  3859. compositing at the Tk level.
  3860. - Added support for 16- and 32-bit images to McIdas loader.
  3861. Based on file samples and stand-alone reader code provided by Craig
  3862. Swank.
  3863. - Added ImagePalette support to putpalette.
  3864. - Fixed problem with incremental parsing of PNG files.
  3865. - Make selftest.py report non-zero status on failure (from Mark
  3866. Sienkiewicz)
  3867. - Add big endian save support and multipage infrastructure to the TIFF
  3868. writer (from Sebastian Haase).
  3869. - Handle files with GPS IFD but no basic EXIF IFD (reported by Kurt
  3870. Schwehr).
  3871. - Added zTXT support (from Andrew Kuchling via Lowell Alleman).
  3872. - Fixed potential infinite loop bug in ImageFont (from Guilherme Polo).
  3873. - Added sample ICC profiles (from Kevin Cazabon)
  3874. - Fixed array interface for I, F, and RGBA/RGBX images.
  3875. - Added Chroma subsampling support for JPEG (from Justin Huff).
  3876. Justin writes: Attached is a patch (against PIL 1.1.6) to provide
  3877. control over the chroma subsampling done by the JPEG encoder. This
  3878. is often useful for reducing compression artifacts around edges of
  3879. clipart and text.
  3880. - Added USM/Gaussian Blur code from Kevin Cazabon.
  3881. - Fixed bug w. uninitialized image data when cropping outside the
  3882. source image.
  3883. - Use ImageShow to implement the Image.show method.
  3884. Most notably, this picks the 'display' utility when available. It
  3885. also allows application code to register new display utilities via
  3886. the ImageShow registry.
  3887. - Release the GIL in the PNG compressor (from Michael van Tellingen).
  3888. - Revised JPEG CMYK handling.
  3889. Always assume Adobe behaviour, both when reading and writing (based on
  3890. a patch by Kevin Cazabon, and test data by Tim V. and Charlie Clark, and
  3891. additional debugging by Michael van Tellingen).
  3892. - Support for preserving ICC profiles (by Florian Böch via Tim Hatch).
  3893. Florian writes:
  3894. It's a beta, so still needs some testing, but should allow you to:
  3895. - retain embedded ICC profiles when saving from/to JPEG, PNG, TIFF.
  3896. Existing code doesn't need to be changed.
  3897. - access embedded profiles in JPEG, PNG, PSD, TIFF.
  3898. It also includes patches for TIFF to retain IPTC, Photoshop and XMP
  3899. metadata when saving as TIFF again, read/write TIFF resolution
  3900. information correctly, and to correct inverted CMYK JPEG files.
  3901. - Fixed potential memory leak in median cut quantizer (from Evgeny Salmin).
  3902. - Fixed OverflowError when reading upside-down BMP images.
  3903. - Added resolution save option for PDF files.
  3904. Andreas Kostyrka writes: I've included a patched PdfImagePlugin.py
  3905. based on 1.1.6 as included in Ubuntu, that supports a "resolution"
  3906. save option. Not great, but it makes the PDF saving more useful by
  3907. allowing PDFs that are not exactly 72dpi.
  3908. - Look for Tcl/Tk include files in version-specific include directory
  3909. (from Encolpe Degoute).
  3910. - Fixed grayscale rounding error in ImageColor.getcolor (from Tim
  3911. Hatch).
  3912. - Fixed calculation of mean value in ImageEnhance.Contrast (reported
  3913. by "roop" and Scott David Daniels).
  3914. - Fixed truetype positioning when first character has a negative left
  3915. bearing (from Ned Batchelder):
  3916. Ned writes: In PIL 1.1.6, ImageDraw.text will position the string
  3917. incorrectly if the first character has a negative left bearing. To
  3918. see the problem, show a string like "///" in an italic font. The
  3919. first slash will be clipped at the left, and the string will be
  3920. mis-positioned.
  3921. - Fixed resolution unit bug in tiff reader/writer (based on code by
  3922. Florian Höch, Gary Bloom, and others).
  3923. - Added simple transparency support for RGB images (reported by
  3924. Sebastian Spaeth).
  3925. - Added support for Unicode filenames in ImageFont.truetype (from Donn
  3926. Ingle).
  3927. - Fixed potential crash in ImageFont.getname method (from Donn Ingle).
  3928. - Fixed encoding issue in PIL/WalImageFile (from Santiago M. Mola).
  3929. 1.1.6
  3930. -----
  3931. - Fixed some 64-bit compatibility warnings for Python 2.5.
  3932. - Added threading support for the Sane driver (from Abel Deuring).
  3933. 1.1.6b2
  3934. -------
  3935. - Added experimental "floodfill" function to the ImageDraw module
  3936. (based on code by Eric Raymond).
  3937. - The default arguments for "frombuffer" doesn't match "fromstring"
  3938. and the documentation; this is a bug, and will most likely be fixed
  3939. in a future version. In this release, PIL prints a warning message
  3940. instead. To silence the warning, change any calls of the form
  3941. "frombuffer(mode, size, data)" to::
  3942. frombuffer(mode, size, data, "raw", mode, 0, 1)
  3943. - Added "fromarray" function, which takes an object implementing the
  3944. NumPy array interface and creates a PIL Image from it. (from Travis
  3945. Oliphant).
  3946. - Added NumPy array interface support (__array_interface__) to the
  3947. Image class (based on code by Travis Oliphant).
  3948. This allows you to easily convert between PIL image memories and
  3949. NumPy arrays::
  3950. import numpy, Image
  3951. im = Image.open('hopper.jpg')
  3952. a = numpy.asarray(im) # a is readonly
  3953. im = Image.fromarray(a)
  3954. - Fixed CMYK polarity for JPEG images, by treating all images as
  3955. "Adobe CMYK" images. (thanks to Cesare Leonardi and Kevin Cazabon
  3956. for samples, debugging, and patches).
  3957. 1.1.6b1
  3958. -------
  3959. - Added 'expand' option to the Image 'rotate' method. If true, the
  3960. output image is made large enough to hold the entire rotated image.
  3961. - Changed the ImageDraw 'line' method to always draw the last pixel in
  3962. a polyline, independent of line angle.
  3963. - Fixed bearing calculation and clipping in the ImageFont truetype
  3964. renderer; this could lead to clipped text, or crashes in the low-level
  3965. _imagingft module. (based on input from Adam Twardoch and
  3966. others).
  3967. - Added ImageQt wrapper module, for converting PIL Image objects to
  3968. QImage objects in an efficient way.
  3969. - Fixed 'getmodebands' to return the number of bands also for "PA"
  3970. and "LA" modes. Added 'getmodebandnames' helper that return the
  3971. band names.
  3972. 1.1.6a2
  3973. -------
  3974. - Added float/double support to the TIFF loader (from Russell
  3975. Nelson).
  3976. - Fixed broken use of realloc() in path.c (from Jan Matejek)
  3977. - Added save support for Spider images (from William Baxter).
  3978. - Fixed broken 'paste' and 'resize' operations in pildriver
  3979. (from Bill Janssen).
  3980. - Added support for duplex scanning to the Sane interface (Abel
  3981. Deuring).
  3982. 1.1.6a1
  3983. -------
  3984. - Fixed a memory leak in "convert(mode)", when converting from
  3985. L to P.
  3986. - Added pixel access object. The "load" method now returns a
  3987. access object that can be used to directly get and set pixel
  3988. values, using ordinary [x, y] notation::
  3989. pixel = im.load()
  3990. v = pixel[x, y]
  3991. pixel[x, y] = v
  3992. If you're accessing more than a few pixels, this is a lot
  3993. faster than using getpixel/putpixel.
  3994. - Fixed building on Cygwin (from Miki Tebeka).
  3995. - Fixed "point(callable)" on unloaded images (reported by Håkan
  3996. Karlsson).
  3997. - Fixed size bug in ImageWin.ImageWindow constructor (from Victor
  3998. Reijs)
  3999. - Fixed ImageMath float() and int() operations for Python 2.4
  4000. (reported by Don Rozenberg).
  4001. - Fixed "RuntimeError: encoder error -8 in tostring" problem for
  4002. wide "RGB", "I", and "F" images.
  4003. - Fixed line width calculation.
  4004. 1.1.6a0
  4005. -------
  4006. - Fixed byte order issue in Image.paste(ink) (from Ka-Ping Yee).
  4007. - Fixed off-by-0.5 errors in the ANTIALIAS code (based on input
  4008. from Douglas Bagnall).
  4009. - Added buffer interface support to the Path constructor. If
  4010. a buffer is provided, it is assumed to contain a flat array
  4011. of float coordinates (e.g. array.array('f', seq)).
  4012. - Added new ImageMath module.
  4013. - Fixed ImageOps.equalize when used with a small number of distinct
  4014. values (reported by David Kirtley).
  4015. - Fixed potential integer division in PSDraw.image (from Eric Etheridge).
  4016. 1.1.5c2 and 1.1.5 final
  4017. -----------------------
  4018. - Added experimental PERSPECTIVE transform method (from Jeff Breidenbach).
  4019. 1.1.5c1
  4020. -------
  4021. - Make sure "thumbnail" never generates zero-wide or zero-high images
  4022. (reported by Gene Skonicki)
  4023. - Fixed a "getcolors" bug that could result in a zero count for some
  4024. colors (reported by Richard Oudkerk).
  4025. - Changed default "convert" palette to avoid "rounding errors" when
  4026. round-tripping white source pixels (reported by Henryk Gerlach and
  4027. Jeff Epler).
  4028. 1.1.5b3
  4029. -------
  4030. - Don't crash in "quantize" method if the number of colors requested
  4031. is larger than 256. This release raises a ValueError exception;
  4032. future versions may return a mode "RGB" image instead (reported
  4033. by Richard Oudkerk).
  4034. - Added WBMP read/write support (based on code by Duncan Booth).
  4035. 1.1.5b2
  4036. -------
  4037. - Added DPI read/write support to the PNG codec. The decoder sets
  4038. the info["dpi"] attribute for PNG files with appropriate resolution
  4039. settings. The encoder uses the "dpi" option (based on code by Niki
  4040. Spahiev).
  4041. - Added limited support for "point" mappings from mode "I" to mode "L".
  4042. Only 16-bit values are supported (other values are clipped), the lookup
  4043. table must contain exactly 65536 entries, and the mode argument must be
  4044. set to "L".
  4045. - Added support for Mac OS X icns files (based on code by Bob Ippolito).
  4046. - Added "ModeFilter" support to the ImageFilter module.
  4047. - Added support for Spider images (from William Baxter). See the
  4048. comments in PIL/SpiderImagePlugin.py for more information on this
  4049. format.
  4050. 1.1.5b1
  4051. -------
  4052. - Added new Sane release (from Ralph Heinkel). See the Sane/README
  4053. and Sane/CHANGES files for more information.
  4054. - Added experimental PngInfo chunk container to the PngImageFile
  4055. module. This can be used to add arbitrary chunks to a PNG file.
  4056. Create a PngInfo instance, use "add" or "add_text" to add chunks,
  4057. and pass the instance as the "pnginfo" option when saving the
  4058. file.
  4059. - Added "getpalette" method. This returns the palette as a list,
  4060. or None if the image has no palette. To modify the palette, use
  4061. "getpalette" to fetch the current palette, modify the list, and
  4062. put it back using "putpalette".
  4063. - Added optional flattening to the ImagePath "tolist" method.
  4064. tolist() or tolist(0) returns a list of 2-tuples, as before.
  4065. tolist(1) returns a flattened list instead.
  4066. 1.1.5a5
  4067. -------
  4068. - Fixed BILINEAR/BICUBIC/ANTIALIAS filtering for mode "LA".
  4069. - Added "getcolors()" method. This is similar to the existing histogram
  4070. method, but looks at color values instead of individual layers,
  4071. and returns an unsorted list of (count, color) tuples.
  4072. By default, the method returns None if finds more than 256 colors.
  4073. If you need to look for more colors, you can pass in a limit (this
  4074. is used to allocate internal tables, so you probably don't want to
  4075. pass in too large values).
  4076. - Build improvements: Fixed building under AIX, improved detection of
  4077. FreeType2 and Mac OS X framework libraries, and more. Many thanks
  4078. to everyone who helped test the new "setup.py" script!
  4079. 1.1.5a4
  4080. -------
  4081. - The "save" method now looks for a file format driver before
  4082. creating the file.
  4083. - Don't use antialiased truetype fonts when drawing in mode "P", "I",
  4084. and "F" images.
  4085. - Rewrote the "setup.py" file. The new version scans for available
  4086. support libraries, and configures both the libImaging core library
  4087. and the bindings in one step.
  4088. To use specific versions of the libraries, edit the ROOT variables
  4089. in the setup.py file.
  4090. - Removed threaded "show" viewer; use the old "show" implementation
  4091. instead (Windows).
  4092. - Added deprecation warnings to Image.offset, ImageDraw.setink, and
  4093. ImageDraw.setfill.
  4094. - Added width option to ImageDraw.line(). The current implementation
  4095. works best for straight lines; it does not support line joins, so
  4096. polylines won't look good.
  4097. - ImageDraw.Draw is now a factory function instead of a class. If
  4098. you need to create custom draw classes, inherit from the ImageDraw
  4099. class. All other code should use the factory function.
  4100. - Fixed loading of certain PCX files (problem reported by Greg
  4101. Hamilton, who also provided samples).
  4102. - Changed _imagingft.c to require FreeType 2.1 or newer. The
  4103. module can still be built with earlier versions; see comments
  4104. in _imagingft.c for details.
  4105. 1.1.5a3
  4106. -------
  4107. - Added 'getim' method, which returns a PyCObject wrapping an
  4108. Imaging pointer. The description string is set to IMAGING_MAGIC.
  4109. See Imaging.h for pointer and string declarations.
  4110. - Fixed reading of TIFF JPEG images (problem reported by Ulrik
  4111. Svensson).
  4112. - Made ImageColor work under Python 1.5.2
  4113. - Fixed division by zero "equalize" on very small images (from
  4114. Douglas Bagnall).
  4115. 1.1.5a2
  4116. -------
  4117. - The "paste" method now supports the alternative "paste(im, mask)"
  4118. syntax (in this case, the box defaults to im's bounding box).
  4119. - The "ImageFile.Parser" class now works also for PNG files with
  4120. more than one IDAT block.
  4121. - Added DPI read/write to the TIFF codec, and fixed writing of
  4122. rational values. The decoder sets the info["dpi"] attribute
  4123. for TIFF files with appropriate resolution settings. The
  4124. encoder uses the "dpi" option.
  4125. - Disable interlacing for small (or narrow) GIF images, to
  4126. work around what appears to be a hard-to-find bug in PIL's
  4127. GIF encoder.
  4128. - Fixed writing of mode "P" PDF images. Made mode "1" PDF
  4129. images smaller.
  4130. - Made the XBM reader a bit more robust; the file may now start
  4131. with a few whitespace characters.
  4132. - Added support for enhanced metafiles to the WMF driver. The
  4133. separate PILWMF kit lets you render both placeable WMF files
  4134. and EMF files as raster images. See
  4135. http://effbot.org/downloads#pilwmf
  4136. 1.1.5a1
  4137. -------
  4138. - Replaced broken WMF driver with a WMF stub plugin (see below).
  4139. - Fixed writing of mode "1", "L", and "CMYK" PDF images (based on
  4140. input from Nicholas Riley and others).
  4141. - Fixed adaptive palette conversion for zero-width or zero-height
  4142. images (from Chris Cogdon)
  4143. - Fixed reading of PNG images from QuickTime 6 (from Paul Pharr)
  4144. - Added support for StubImageFile plugins, including stub plugins
  4145. for BUFR, FITS, GRIB, and HDF5 files. A stub plugin can identify
  4146. a given file format, but relies on application code to open and
  4147. save files in that format.
  4148. - Added optional "encoding" argument to the ImageFont.truetype
  4149. factory. This argument can be used to specify non-Unicode character
  4150. maps for fonts that support that. For example, to draw text using
  4151. the Microsoft Symbol font, use::
  4152. font = ImageFont.truetype("symbol.ttf", 16, encoding="symb")
  4153. draw.text((0, 0), unichr(0xF000 + 0xAA))
  4154. (note that the symbol font uses characters in the 0xF000-0xF0FF
  4155. range)
  4156. Common encodings are "unic" (Unicode), "symb" (Microsoft Symbol),
  4157. "ADOB" (Adobe Standard), "ADBE" (Adobe Expert), and "armn" (Apple
  4158. Roman). See the FreeType documentation for more information.
  4159. - Made "putalpha" a bit more robust; you can now attach an alpha
  4160. layer to a plain "L" or "RGB" image, and you can also specify
  4161. constant alphas instead of alpha layers (using integers or colour
  4162. names).
  4163. - Added experimental "LA" mode support.
  4164. An "LA" image is an "L" image with an attached transparency layer.
  4165. Note that support for "LA" is not complete; some operations may
  4166. fail or produce unexpected results.
  4167. - Added "RankFilter", "MinFilter", "MedianFilter", and "MaxFilter"
  4168. classes to the ImageFilter module.
  4169. - Improved support for applications using multiple threads; PIL
  4170. now releases the global interpreter lock for many CPU-intensive
  4171. operations (based on work by Kevin Cazabon).
  4172. - Ignore Unicode characters in the PCF loader (from Andres Polit)
  4173. - Fixed typo in OleFileIO.loadfat, which could affect loading of
  4174. FlashPix and Image Composer images (Daniel Haertle)
  4175. - Fixed building on platforms that have Freetype but don't have
  4176. Tcl/Tk (Jack Jansen, Luciano Nocera, Piet van Oostrum and others)
  4177. - Added EXIF GPSInfo read support for JPEG files. To extract
  4178. GPSInfo information, open the file, extract the exif dictionary,
  4179. and check for the key 0x8825 (GPSInfo). If present, it contains
  4180. a dictionary mapping GPS keys to GPS values. For a list of keys,
  4181. see the EXIF specification.
  4182. The "ExifTags" module contains a GPSTAGS dictionary mapping GPS
  4183. tags to tag names.
  4184. - Added DPI read support to the PCX and DCX codecs (info["dpi"]).
  4185. - The "show" methods now uses a built-in image viewer on Windows.
  4186. This viewer creates an instance of the ImageWindow class (see
  4187. below) and keeps it running in a separate thread. NOTE: This
  4188. was disabled in 1.1.5a4.
  4189. - Added experimental "Window" and "ImageWindow" classes to the
  4190. ImageWin module. These classes allow you to create a WCK-style
  4191. toplevel window, and use it to display raster data.
  4192. - Fixed some Python 1.5.2 issues (to build under 1.5.2, use the
  4193. Makefile.pre.in/Setup.in approach)
  4194. - Added support for the TIFF FillOrder tag. PIL can read mode "1",
  4195. "L", "P" and "RGB" images with non-standard FillOrder (based on
  4196. input from Jeff Breidenbach).
  4197. 1.1.4 final
  4198. -----------
  4199. - Fixed ImageTk build problem on Unix.
  4200. 1.1.4b2
  4201. -------
  4202. - Improved building on Mac OS X (from Jack Jansen).
  4203. - Improved building on Windows with MinGW (from Klamer Shutte).
  4204. - If no font is specified, ImageDraw now uses the embedded default
  4205. font. Use the "load" or "truetype" methods to load a real font.
  4206. - Added embedded default font to the ImageFont module (currently
  4207. an 8-pixel Courier font, taken from the X window distribution).
  4208. 1.1.4b1
  4209. -------
  4210. - Added experimental EXIF support for JPEG files. To extract EXIF
  4211. information from a JPEG file, open the file as usual, and call the
  4212. "_getexif" method. If successful, this method returns a dictionary
  4213. mapping EXIF TIFF tags to values. If the file does not contain EXIF
  4214. data, the "_getexif" method returns None.
  4215. The "ExifTags" module contains a dictionary mapping tags to tag
  4216. names.
  4217. This interface will most likely change in future versions.
  4218. - Fixed a bug when using the "transparency" option with the GIF
  4219. writer.
  4220. - Added limited support for "bitfield compression" in BMP files
  4221. and DIB buffers, for 15-bit, 16-bit, and 32-bit images. This
  4222. also fixes a problem with ImageGrab module when copying screendumps
  4223. from the clipboard on 15/16/32-bit displays.
  4224. - Added experimental WAL (Quake 2 textures) loader. To use this
  4225. loader, import WalImageFile and call the "open" method in that
  4226. module.
  4227. 1.1.4a4
  4228. -------
  4229. - Added updated SANE driver (Andrew Kuchling, Abel Deuring)
  4230. - Use Python's "mmap" module on non-Windows platforms to read some
  4231. uncompressed formats using memory mapping. Also added a "frombuffer"
  4232. function that allows you to access the contents of an existing string
  4233. or buffer object as if it were an image object.
  4234. - Fixed a memory leak that could appear when processing mode "P"
  4235. images (from Pier Paolo Glave)
  4236. - Ignore Unicode characters in the BDF loader (from Graham Dumpleton)
  4237. 1.1.4a3 released; Windows only
  4238. ------------------------------
  4239. - Added experimental RGBA-on-RGB drawing support. To use RGBA
  4240. colours on an RGB image, pass "RGBA" as the second string to
  4241. the ImageDraw.Draw constructor.
  4242. - Added support for non-ASCII strings (Latin-1) and Unicode
  4243. to the truetype font renderer.
  4244. - The ImageWin "Dib" object can now be constructed directly from
  4245. an image object.
  4246. - The ImageWin module now allows you use window handles as well
  4247. as device contexts. To use a window handle, wrap the handle in
  4248. an ImageWin.HWND object, and pass in this object instead of the
  4249. device context.
  4250. 1.1.4a2
  4251. -------
  4252. - Improved support for 16-bit unsigned integer images (mode "I;16").
  4253. This includes TIFF reader support, and support for "getextrema"
  4254. and "point" (from Klamer Shutte).
  4255. - Made the BdfFontFile reader a bit more robust (from Kevin Cazabon
  4256. and Dmitry Vasiliev)
  4257. - Changed TIFF writer to always write Compression tag, even when
  4258. using the default compression (from Greg Couch).
  4259. - Added "show" support for Mac OS X (from Dan Wolfe).
  4260. - Added clipboard support to the "ImageGrab" module (Windows only).
  4261. The "grabclipboard" function returns an Image object, a list of
  4262. filenames (not in 1.1.4), or None if neither was found.
  4263. 1.1.4a1
  4264. -------
  4265. - Improved support for drawing RGB data in palette images. You can
  4266. now use RGB tuples or colour names (see below) when drawing in a
  4267. mode "P" image. The drawing layer automatically assigns color
  4268. indexes, as long as you don't use more than 256 unique colours.
  4269. - Moved self test from MiniTest/test.py to ./selftest.py.
  4270. - Added support for CSS3-style color strings to most places that
  4271. accept colour codes/tuples. This includes the "ImageDraw" module,
  4272. the Image "new" function, and the Image "paste" method.
  4273. Colour strings can use one of the following formats: "#f00",
  4274. "#ff0000", "rgb(255,0,0)", "rgb(100%,0%,0%)", "hsl(0, 100%, 50%)",
  4275. or "red" (most X11-style colour names are supported). See the
  4276. documentation for the "ImageColor" module for more information.
  4277. - Fixed DCX decoder (based on input from Larry Bates)
  4278. - Added "IptcImagePlugin.getiptcinfo" helper to extract IPTC/NAA
  4279. newsphoto properties from JPEG, TIFF, or IPTC files.
  4280. - Support for TrueType/OpenType fonts has been added to
  4281. the standard distribution. You need the freetype 2.0
  4282. library.
  4283. - Made the PCX reader a bit more robust when reading 2-bit
  4284. and 4-bit PCX images with odd image sizes.
  4285. - Added "Kernel" class to the ImageFilter module. This class
  4286. allows you to filter images with user-defined 3x3 and 5x5
  4287. convolution kernels.
  4288. - Added "putdata" support for mode "I", "F" and "RGB".
  4289. - The GIF writer now supports the transparency option (from
  4290. Denis Benoit).
  4291. - A HTML version of the module documentation is now shipped
  4292. with the source code distribution. You'll find the files in
  4293. the Doc subdirectory.
  4294. - Added support for Palm pixmaps (from Bill Janssen). This
  4295. change was listed for 1.1.3, but the "PalmImagePlugin" driver
  4296. didn't make it into the distribution.
  4297. - Improved decoder error messages.
  4298. 1.1.3 final
  4299. -----------
  4300. - Made setup.py look for old versions of zlib. For some background,
  4301. see: https://zlib.net/advisory-2002-03-11.txt
  4302. 1.1.3c2
  4303. -------
  4304. - Added setup.py file (tested on Unix and Windows). You still
  4305. need to build libImaging/imaging.lib in the traditional way,
  4306. but the setup.py script takes care of the rest.
  4307. The old Setup.in/Makefile.pre.in build method is still
  4308. supported.
  4309. - Fixed segmentation violation in ANTIALIAS filter (an internal
  4310. buffer wasn't properly allocated).
  4311. 1.1.3c1
  4312. -------
  4313. - Added ANTIALIAS downsampling filter for high-quality "resize"
  4314. and "thumbnail" operations. Also added filter option to the
  4315. "thumbnail" operation; the default value is NEAREST, but this
  4316. will most likely change in future versions.
  4317. - Fixed plugin loader to be more robust if the __file__
  4318. variable isn't set.
  4319. - Added seek/tell support (for layers) to the PhotoShop
  4320. loader. Layer 0 is the main image.
  4321. - Added new (but experimental) "ImageOps" module, which provides
  4322. shortcuts for commonly used operations on entire images.
  4323. - Don't mess up when loading PNG images if the decoder leaves
  4324. data in the output buffer. This could cause internal errors
  4325. on some PNG images, with some versions of ZLIB. (Bug report
  4326. and patch provided by Bernhard Herzog.)
  4327. - Don't mess up on Unicode filenames.
  4328. - Don't mess up when drawing on big endian platforms.
  4329. - Made the TIFF loader a bit more robust; it can now read some
  4330. more slightly broken TIFF files (based on input from Ted Wright,
  4331. Bob Klimek, and D. Alan Stewart)
  4332. - Added OS/2 EMX build files (from Andrew MacIntyre)
  4333. - Change "ImageFont" to reject image files if they don't have the
  4334. right mode. Older versions could leak memory for "P" images.
  4335. (Bug reported by Markus Gritsch).
  4336. - Renamed some internal functions to avoid potential build
  4337. problem on Mac OS X.
  4338. - Added DL_EXPORT where relevant (for Cygwin, based on input
  4339. from Robert Yodlowski)
  4340. - (re)moved bogus __init__ call in BdfFontFile (bug spotted
  4341. by Fred Clare)
  4342. - Added "ImageGrab" support (Windows only)
  4343. - Added support for XBM hotspots (based on code contributed by
  4344. Bernhard Herzog).
  4345. - Added write support for more TIFF tags, namely the Artist,
  4346. Copyright, DateTime, ResolutionUnit, Software, XResolution and
  4347. YResolution tags (from Greg Couch)
  4348. - Added TransposedFont wrapper to ImageFont module
  4349. - Added "optimize" flag to GIF encoder. If optimize is present
  4350. and non-zero, PIL will work harder to create a small file.
  4351. - Raise "EOFError" (not IndexError) when reading beyond the
  4352. end of a TIFF sequence.
  4353. - Support rewind ("seek(0)") for GIF and TIFF sequences.
  4354. - Load grayscale GIF images as mode "L"
  4355. - Added DPI read/write support to the JPEG codec. The decoder
  4356. sets the info["dpi"] attribute for JPEG files with JFIF dpi
  4357. settings. The encoder uses the "dpi" option::
  4358. im = Image.open("file.jpg")
  4359. dpi = im.info["dpi"] # raises KeyError if DPI not known
  4360. im.save("out.jpg", dpi=dpi)
  4361. Note that PIL doesn't always preserve the "info" attribute
  4362. for normal image operations.
  4363. 1.1.2c1 and 1.1.2 final
  4364. -----------------------
  4365. - Adapted to Python 2.1. Among other things, all uses of the
  4366. "regex" module have been replaced with "re".
  4367. - Fixed attribute error when reading large PNG files (this bug
  4368. was introduced in maintenance code released after the 1.1.1
  4369. release)
  4370. - Ignore non-string objects in sys.path
  4371. - Fixed Image.transform(EXTENT) for negative xoffsets
  4372. - Fixed loading of image plugins if PIL is installed as a package.
  4373. (The plugin loader now always looks in the directory where the
  4374. Image.py module itself is found, even if that directory isn't on
  4375. the standard search path)
  4376. - The Png plugin has been added to the list of preloaded standard
  4377. formats
  4378. - Fixed bitmap/text drawing in fill mode.
  4379. - Fixed "getextrema" to work also for multiband images.
  4380. - Added transparency support for L and P images to the PNG codec.
  4381. - Improved support for read-only images. The "load" method now
  4382. sets the "readonly" attribute for memory-mapped images. Operations
  4383. that modifies an image in place (such as "paste" and drawing operations)
  4384. creates an in-memory copy of the image, if necessary. (before this
  4385. change, any attempt to modify a memory-mapped image resulted in a
  4386. core dump...)
  4387. - Added special cases for lists everywhere PIL expects a sequence.
  4388. This should speed up things like "putdata" and drawing operations.
  4389. - The Image.offset method is deprecated. Use the ImageChops.offset
  4390. function instead.
  4391. - Changed ImageChops operators to copy palette and info dictionary
  4392. from the first image argument.
  4393. 1.1.1
  4394. -----
  4395. - Additional fixes for Python 1.6/2.0, including TIFF "save" bug.
  4396. - Changed "init" to properly load plugins when PIL is used as a
  4397. package.
  4398. - Fixed broken "show" method (on Unix)
  4399. 1.0 to 1.1
  4400. ----------
  4401. - Adapted to Python 1.6 ("append" and other method changes)
  4402. - Fixed Image.paste when pasting with solid colour and matte
  4403. layers ("L" or "RGBA" masks) (bug reported by Robert Kern)
  4404. - To make it easier to distribute prebuilt versions of PIL,
  4405. the tkinit binding stuff has been moved to a separate
  4406. extension module, named "_imagingtk".
  4407. 0.3b2 to 1.0 final
  4408. ------------------
  4409. - If there's no 16-bit integer (like on a Cray T3E), set
  4410. INT16 to the smallest integer available. Most of the
  4411. library works just fine anyway (from Bill Crutchfield)
  4412. - Tweaks to make drawing work on big-endian platforms.
  4413. 1.0c2
  4414. -----
  4415. - If PIL is built with the WITH_TKINTER flag, ImageTk can
  4416. automatically hook into a standard Tkinter build. You
  4417. no longer need to build your own Tkinter to use the
  4418. ImageTk module.
  4419. The old way still works, though. For more information,
  4420. see Tk/install.txt.
  4421. - Some tweaks to ImageTk to support multiple Tk interpreters
  4422. (from Greg Couch).
  4423. - ImageFont "load_path" now scans directory mentioned in .pth
  4424. files (from Richard Jones).
  4425. 1.0c1
  4426. -----
  4427. - The TIFF plugin has been rewritten. The new plugin fully
  4428. supports all major PIL image modes (including F and I).
  4429. - The ImageFile module now includes a Parser class, which can
  4430. be used to incrementally decode an image file (while downloading
  4431. it from the net, for example). See the handbook for
  4432. details.
  4433. - "show" now converts non-standard modes to "L" or "RGB" (as
  4434. appropriate), rather than writing weird things to disk for
  4435. "xv" to choke upon. (bug reported by Les Schaffer).
  4436. 1.0b2
  4437. -----
  4438. - Major speedups for rotate, transform(EXTENT), and transform(AFFINE)
  4439. when using nearest neighbour resampling.
  4440. - Modified ImageDraw to be compatible with the Arrow graphics
  4441. interface. See the handbook for details.
  4442. - PIL now automatically loads file codecs when used as a package
  4443. (from The Dragon De Monsyne). Also included an __init__.py file
  4444. in the standard distribution.
  4445. - The GIF encoder has been modified to produce much smaller files.
  4446. PIL now uses a run-length encoding method to encode GIF files.
  4447. On a random selection of GIF images grabbed from the web, this
  4448. version makes the images about twice as large as the original
  4449. LZW files, where the earlier version made them over 5 times
  4450. larger. YMMV, of course.
  4451. - Added PCX write support (works with "1", "P", "L", and "RGB")
  4452. - Added "bitmap" and "textsize" methods to ImageDraw.
  4453. - Improved font rendering code. Fixed a bug or two, and moved
  4454. most of the time critical stuff to C.
  4455. - Removed "bdf2pil.py". Use "pilfont.py" instead!
  4456. - Improved 16-bit support (still experimental, though).
  4457. The following methods now support "I;16" and "I;16B" images:
  4458. "getpixel", "copy", "convert" (to and from mode "I"), "resize",
  4459. "rotate", and "transform" with nearest neighbour filters, and
  4460. "save" using the IM format. The "new" and "open" functions
  4461. also work as expected. On Windows, 16-bit files are memory
  4462. mapped.
  4463. NOTE: ALL other operations are still UNDEFINED on 16-bit images.
  4464. - The "paste" method now supports constant sources.
  4465. Just pass a colour value (a number or a tuple, depending on
  4466. the target image mode) instead of the source image.
  4467. This was in fact implemented in an inefficient way in
  4468. earlier versions (the "paste" method generated a temporary
  4469. source image if you passed it a colour instead of an image).
  4470. In this version, this is handled on the C level instead.
  4471. - Added experimental "RGBa" mode support.
  4472. An "RGBa" image is an RGBA image where the colour components
  4473. have have been premultiplied with the alpha value. PIL allows
  4474. you to convert an RGBA image to an RGBa image, and to paste
  4475. RGBa images on top of RGB images. Since this saves a bunch
  4476. of multiplications and shifts, it is typically about twice
  4477. as fast an ordinary RGBA paste.
  4478. - Eliminated extra conversion step when pasting "RGBA" or "RGBa"
  4479. images on top of "RGB" images.
  4480. - Fixed Image.BICUBIC resampling for "RGB" images.
  4481. - Fixed PCX image file handler to properly read 8-bit PCX
  4482. files (bug introduced in 1.0b1, reported by Bernhard
  4483. Herzog)
  4484. - Fixed PSDraw "image" method to restore the coordinate
  4485. system.
  4486. - Fixed "blend" problem when applied to images that was
  4487. not already loaded (reported by Edward C. Jones)
  4488. - Fixed -f option to "pilconvert.py" (from Anthony Baxter)
  4489. 1.0b1
  4490. -----
  4491. - Added Toby J. Sargeant's quantization package. To enable
  4492. quantization, use the "palette" option to "convert"::
  4493. imOut = im.convert("P", palette=Image.ADAPTIVE)
  4494. This can be used with "L", "P", and "RGB" images. In this
  4495. version, dithering cannot be used with adaptive palettes.
  4496. Note: ADAPTIVE currently maps to median cut quantization
  4497. with 256 colours. The quantization package also contains
  4498. a maximum coverage quantizer, which will be supported by
  4499. future versions of PIL.
  4500. - Added Eric S. Raymond's "pildriver" image calculator to the
  4501. distribution. See the docstring for more information.
  4502. - The "offset" method no longer dumps core if given positive
  4503. offsets (from Charles Waldman).
  4504. - Fixed a resource leak that could cause ImageWin to run out of
  4505. GDI resources (from Roger Burnham).
  4506. - Added "arc", "chord", and "pieslice" methods to ImageDraw (inspired
  4507. by code contributed by Richard Jones).
  4508. - Added experimental 16-bit support, via modes "I;16" (little endian
  4509. data) and "I;16B" (big endian). Only a few methods properly support
  4510. such images (see above).
  4511. - Added XV thumbnail file handler (from Gene Cash).
  4512. - Fixed BMP image file handler to handle palette images with small
  4513. palettes (from Rob Hooft).
  4514. - Fixed Sun raster file handler for palette images (from Charles
  4515. Waldman).
  4516. - Improved various internal error messages.
  4517. - Fixed Path constructor to handle arbitrary sequence objects. This
  4518. also affects the ImageDraw class (from Richard Jones).
  4519. - Fixed a bug in JpegDecode that caused PIL to report "decoder error
  4520. -2" for some progressive JPEG files (reported by Magnus Källström,
  4521. who also provided samples).
  4522. - Fixed a bug in JpegImagePlugin that caused PIL to hang when loading
  4523. JPEG files using 16-bit quantization tables.
  4524. - The Image "transform" method now supports Image.QUAD transforms.
  4525. The data argument is an 8-tuple giving the upper left, lower
  4526. left, lower right, and upper right corner of the source quadrilateral.
  4527. Also added Image.MESH transform which takes a list
  4528. of quadrilaterals.
  4529. - The Image "resize", "rotate", and "transform" methods now support
  4530. Image.BILINEAR (2x2) and Image.BICUBIC (4x4) resampling filters.
  4531. Filters can be used with all transform methods.
  4532. - The ImageDraw "rectangle" method now includes both the right
  4533. and the bottom edges when drawing filled rectangles.
  4534. - The TGA decoder now works properly for runlength encoded images
  4535. which have more than one byte per pixel.
  4536. - "getbands" on an YCbCr image now returns ("Y", "Cb", "Cr")
  4537. - Some file drivers didn't handle the optional "modify" argument
  4538. to the load method. This resulted in exceptions when you used
  4539. "paste" (and other methods that modify an image in place) on a
  4540. newly opened file.
  4541. 0.3b2
  4542. -----
  4543. The test suite includes 825 individual tests.
  4544. - An Image "getbands" method has been added. It returns a tuple
  4545. containing the individual band names for this image. To figure
  4546. out how many bands an image has, use "len(im.getbands())".
  4547. - An Image "putpixel" method has been added.
  4548. - The Image "point" method can now be used to convert "L" images
  4549. to any other format, via a lookup table. That table should
  4550. contain 256 values for each band in the output image.
  4551. - Some file drivers (including FLI/FLC, GIF, and IM) accidentally
  4552. overwrote the offset method with an internal attribute. All
  4553. drivers have been updated to use private attributes where
  4554. possible.
  4555. - The Image "histogram" method now works for "I" and "F" images.
  4556. For these modes, PIL divides the range between the min and
  4557. max values used in the image into 256 bins. You can also
  4558. pass in your own min and max values via the "extrema" option::
  4559. h = im.histogram(extrema=(0, 255))
  4560. - An Image "getextrema" method has been added. It returns the
  4561. min and max values used in the image. In this release, this
  4562. works for single band images only.
  4563. - Changed the PNG driver to load and save mode "I" images as
  4564. 16-bit images. When saving, values outside the range 0..65535
  4565. are clipped.
  4566. - Fixed ImageFont.py to work with the new "pilfont" compiler.
  4567. - Added JPEG "save" and "draft" support for mode "YCbCr" images.
  4568. Note that if you save an "YCbCr" image as a JPEG file and read
  4569. it back, it is read as an RGB file. To get around this, you
  4570. can use the "draft" method::
  4571. im = Image.open("color.jpg")
  4572. im.draft("YCbCr", im.size)
  4573. - Read "RGBA" TGA images. Also fixed the orientation bug; all
  4574. images should now come out the right way.
  4575. - Changed mode name (and internal representation) from "YCrCb"
  4576. to "YCbCr" (!)
  4577. **WARNING: MAY BREAK EXISTING CODE**
  4578. 0.3b1
  4579. -----
  4580. The test suite includes 750 individual tests.
  4581. - The "pilfont" package is now included in the standard PIL
  4582. distribution. The pilfont utility can be used to convert
  4583. X BDF and PCF raster font files to a format understood by
  4584. the ImageFont module.
  4585. - GIF files are now interlaced by default. To write a
  4586. non-interlaced file, pass interlace=0 to the "save"
  4587. method.
  4588. - The default string format has changed for the "fromstring"
  4589. and "tostring" methods.
  4590. **WARNING: MAY BREAK EXISTING CODE**
  4591. NOTE: If no extra arguments are given, the first line in
  4592. the string buffer is the top line of the image, instead of
  4593. the bottom line. For RGB images, the string now contains
  4594. 3 bytes per pixel instead of 4. These changes were made
  4595. to make the methods compatible with the "fromstring"
  4596. factory function.
  4597. To get the old behaviour, use the following syntax::
  4598. data = im.tostring("raw", "RGBX", 0, -1)
  4599. im.fromstring(data, "raw", "RGBX", 0, -1)
  4600. - "new" no longer gives a MemoryError if the width or height
  4601. is zero (this only happened on platforms where malloc(0)
  4602. or calloc(0) returns NULL).
  4603. - "new" now adds a default palette object to "P" images.
  4604. - You can now convert directly between all modes supported by
  4605. PIL. When converting colour images to "P", PIL defaults to
  4606. a "web" palette and dithering. When converting grayscale
  4607. images to "1", PIL uses a thresholding and dithering.
  4608. - Added a "dither" option to "convert". By default, "convert"
  4609. uses floyd-steinberg error diffusion for "P" and "1" targets,
  4610. so this option is only used to *disable* dithering. Allowed
  4611. values are NONE (no dithering) or FLOYDSTEINBERG (default).
  4612. ::
  4613. imOut = im.convert("P", dither=Image.NONE)
  4614. - Added a full set of "I" decoders. You can use "fromstring"
  4615. (and file decoders) to read any standard integer type as an
  4616. "I" image.
  4617. - Added some support for "YCbCr" images (creation, conversion
  4618. from/to "L" and "RGB", IM YCC load/save)
  4619. - "getpixel" now works properly with fractional coordinates.
  4620. - ImageDraw "setink" now works with "I", "F", "RGB", "RGBA",
  4621. "RGBX", "CMYK", and "YCbCr" images.
  4622. - ImImagePlugin no longer attaches palettes to "RGB" images.
  4623. - Various minor fixes.
  4624. 0.3a4
  4625. -----
  4626. - Added experimental IPTC/NAA support.
  4627. - Eliminated AttributeError exceptions after "crop" (from
  4628. Skip Montanaro)
  4629. - Reads some uncompressed formats via memory mapping (this
  4630. is currently supported on Win32 only)
  4631. - Fixed some last minute glitches in the last alpha release
  4632. (Types instead of types in Image.py, version numbers, etc.)
  4633. - Eliminated some more bogus compiler warnings.
  4634. - Various fixes to make PIL compile and run smoother on Macs
  4635. (from Jack Jansen).
  4636. - Fixed "fromstring" and "tostring" for mode "I" images.
  4637. 0.3a3
  4638. -----
  4639. The test suite includes 530 individual tests.
  4640. - Eliminated unexpected side-effect in "paste" with matte. "paste"
  4641. now works properly also if compiled with "gcc".
  4642. - Adapted to Python 1.5 (build issues only)
  4643. - Fixed the ImageDraw "point" method to draw also the last
  4644. point (!).
  4645. - Added "I" and "RGBX" support to Image.new.
  4646. - The plugin path is now properly prepended to the module search
  4647. path when a plugin module is imported.
  4648. - Added "draw" method to the ImageWin.Dib class. This is used by
  4649. Topaz to print images on Windows printers.
  4650. - "convert" now supports conversions from "P" to "1" and "F".
  4651. - "paste" can now take a colour instead of an image as the first argument.
  4652. The colour must match the colour argument given to the new function, and
  4653. match the mode of the target image.
  4654. - Fixed "paste" to allow a mask also for mode "F" images.
  4655. - The BMP driver now saves mode "1" images. When loading images, the mode
  4656. is set to "L" for 8-bit files with grayscale palettes, and to "P" for
  4657. other 8-bit files.
  4658. - The IM driver now reads and saves "1" images (file modes "0 1" or "L 1").
  4659. - The JPEG and GIF drivers now saves "1" images. For JPEG, the image
  4660. is saved as 8-bit grayscale (it will load as mode "L"). For GIF, the
  4661. image will be loaded as a "P" image.
  4662. - Fixed a potential buffer overrun in the GIF encoder.
  4663. 0.3a2
  4664. -----
  4665. The test suite includes 400 individual tests.
  4666. - Improvements to the test suite revealed a number of minor bugs, which
  4667. are all fixed. Note that crop/paste, 32-bit ImageDraw, and ImageFont
  4668. are still weak spots in this release.
  4669. - Added "putpalette" method to the Image class. You can use this
  4670. to add or modify the palette for "P" and "L" images. If a palette
  4671. is added to an "L" image, it is automatically converted to a "P"
  4672. image.
  4673. - Fixed ImageDraw to properly handle 32-bit image memories
  4674. ("RGB", "RGBA", "CMYK", "F")
  4675. - Fixed "fromstring" and "tostring" not to mess up the mode attribute
  4676. in default mode.
  4677. - Changed ImPlatform.h to work on CRAY's (don't have one at home, so I
  4678. haven't tried it). The previous version assumed that either "short"
  4679. or "int" were 16-bit wide. PIL still won't compile on platforms where
  4680. neither "short", "int" nor "long" are 32-bit wide.
  4681. - Added file= and data= keyword arguments to PhotoImage and BitmapImage.
  4682. This allows you to use them as drop-in replacements for the corresponding
  4683. Tkinter classes.
  4684. - Removed bogus references to the crack coder (ImagingCrack).
  4685. 0.3a1
  4686. -----
  4687. - Make sure image is loaded in "tostring".
  4688. - Added floating point packer (native 32-bit floats only).
  4689. 0.1b1 to 0.2 (b5)
  4690. -----------------
  4691. - Modified "fromstring" and "tostring" methods to use file codecs.
  4692. Also added "fromstring" factory method to create an image directly
  4693. from data in a string.
  4694. - Added support for 32-bit floating point images (mode "F"). You
  4695. can convert between "L" and "F" images, and apply a subset of the
  4696. available image processing methods on the "F" image. You can also
  4697. read virtually any data format into a floating point image memory;
  4698. see the section on "Decoding Floating Point Data" in the handbook
  4699. for more information.
  4700. 0.2b5 released; on windows only
  4701. -------------------------------
  4702. - Fixed the tobitmap() method to work properly for small bitmaps.
  4703. - Added RMS and standard deviation to the ImageStat.Stat class. Also
  4704. modified the constructor to take an optional feature mask, and also
  4705. to accept either an image or a list containing the histogram data.
  4706. - The BitmapImage code in ImageTk can now use a special bitmap
  4707. decoder, which has to be patched into Tk. See the "Tk/pilbitmap.txt"
  4708. file for details. If not installed, bitmaps are transferred to Tk as
  4709. XBM strings.
  4710. - The PhotoImage code in ImageTk now uses a Tcl command ("PyImagingPaste")
  4711. instead of a special image type. This gives somewhat better performance,
  4712. and also allows PIL to support transparency.
  4713. **WARNING: TKAPPINIT MUST BE MODIFIED**
  4714. - ImageTk now honours the alpha layer in RGBA images. Only fully
  4715. transparent pixels are made transparent (that is, the alpha layer
  4716. is treated as a mask). To treat the alpha laters as a matte, you
  4717. must paste the image on the background before handing it over to
  4718. ImageTk.
  4719. - Added McIdas reader (supports 8-bit images only).
  4720. - PIL now preloads drivers for BMP, GIF, JPEG, PPM, and TIFF. As
  4721. long as you only load and save these formats, you don't have to
  4722. wait for a full scan for drivers. To force scanning, call the
  4723. Image.init() function.
  4724. - The "seek" and "tell" methods are now always available, also for
  4725. single-frame images.
  4726. - Added optional mask argument to histogram method. The mask may
  4727. be an "1" or "L" image with the same size as the original image.
  4728. Only pixels where the mask is non-zero are included in the
  4729. histogram.
  4730. - The "paste" method now allows you to specify only the lower left
  4731. corner (a 2-tuple), instead of the full region (a 4-tuple).
  4732. - Reverted to old plugin scanning model; now scans all directory
  4733. names in the path when looking for plugins.
  4734. - Added PIXAR raster support. Only uncompressed ("dumped") RGB
  4735. images can currently be read (based on information provided
  4736. by Greg Coats).
  4737. - Added FlashPix (FPX) read support. Reads all pixel formats, but
  4738. only the highest resolution is read, and the viewing transform is
  4739. currently ignored.
  4740. - Made PNG encoding somewhat more efficient in "optimize" mode; a
  4741. bug in 0.2b4 didn't enable all predictor filters when optimized
  4742. storage were requested.
  4743. - Added Microsoft Image Composer (MIC) read support. When opened,
  4744. the first sprite in the file is loaded. You can use the seek method
  4745. to load additional sprites from the file.
  4746. - Properly reads "P" and "CMYK" PSD images.
  4747. - "pilconvert" no longer optimizes by default; use the -o option to
  4748. make the file as small as possible (at the expense of speed); use
  4749. the -q option to set the quality when compressing to JPEG.
  4750. - Fixed "crop" not to drop the palette for "P" images.
  4751. - Added and verified FLC support.
  4752. - Paste with "L" or "RGBA" alpha is now several times faster on most
  4753. platforms.
  4754. - Changed Image.new() to initialize the image to black, as described
  4755. in the handbook. To get an uninitialized image, use None as the
  4756. colour.
  4757. - Fixed the PDF encoder to produce a valid header; Acrobat no longer
  4758. complains when you load PDF images created by PIL.
  4759. - PIL only scans fully-qualified directory names in the path when
  4760. looking for plugins.
  4761. **WARNING: MAY BREAK EXISTING CODE**
  4762. - Faster implementation of "save" used when filename is given,
  4763. or when file object has "fileno" and "flush" methods.
  4764. - Don't crash in "crop" if region extends outside the source image.
  4765. - Eliminated a massive memory leak in the "save" function.
  4766. - The GIF decoder doesn't crash if the code size is set to an illegal
  4767. value. This could happen since another bug didn't handle local
  4768. palettes properly if they didn't have the same size as the
  4769. global palette (not very common).
  4770. - Added predictor support (TIFF 6.0 section 14) to the TIFF decoder.
  4771. - Fixed palette and padding problems in BMP driver. Now properly
  4772. writes "1", "L", "P" and "RGB" images.
  4773. - Fixed getpixel()/getdata() to return correct pixel values.
  4774. - Added PSD (PhotoShop) read support. Reads both uncompressed
  4775. and compressed images of most types.
  4776. - Added GIF write support (writes "uncompressed" GIF files only,
  4777. due to unresolvable licensing issues). The "gifmaker.py" script
  4778. can be used to create GIF animations.
  4779. - Reads 8-bit "L" and "P" TGA images. Also reads 16-bit "RGB"
  4780. images.
  4781. - Added FLI read support. This driver has only been tested
  4782. on a few FLI samples.
  4783. - Reads 2-bit and 4-bit PCX images.
  4784. - Added MSP read and write support. Both version 1 and 2 can be
  4785. read, but only version 1 (uncompressed) files are written.
  4786. - Fixed a bug in the FLI/FLC identification code that caused the
  4787. driver to raise an exception when parsing valid FLI/FLC files.
  4788. - Improved performance when loading file format plugins, and when
  4789. opening files.
  4790. - Added GIF animation support, via the "seek" and "tell" methods.
  4791. You can use "player.py" to play an animated GIF file.
  4792. - Removed MNG support, since the spec is changing faster than I
  4793. can change the code. I've added support for the experimental
  4794. ARG format instead. Contact me for more information on this
  4795. format.
  4796. - Added keyword options to the "save" method. The following options
  4797. are currently supported:
  4798. .. list-table::
  4799. :widths: 25 25 50
  4800. :header-rows: 1
  4801. * - Format
  4802. - Option
  4803. - Description
  4804. * - JPEG
  4805. - optimize
  4806. - Minimize output file at the expense of compression speed.
  4807. * - JPEG
  4808. - progressive
  4809. - Enable progressive output. The option value is ignored.
  4810. * - JPEG
  4811. - quality
  4812. - Set compression quality (1-100). The default value is 75.
  4813. * - JPEG
  4814. - smooth
  4815. - Smooth dithered images. Value is strength (1-100). Default is off (0).
  4816. * - PNG
  4817. - optimize
  4818. - Minimize output file at the expense of compression speed.
  4819. Expect more options in future releases. Also note that
  4820. file writers silently ignore unknown options.
  4821. - Plugged memory leaks in the PNG and TIFF decoders.
  4822. - Added PNG write support.
  4823. - (internal) RGB unpackers and converters now set the pad byte
  4824. to 255 (full opacity).
  4825. - Properly handles the "transparency" property for GIF, PNG
  4826. and XPM files.
  4827. - Added a "putalpha" method, allowing you to attach a "1" or "L"
  4828. image as the alpha layer to an "RGBA" image.
  4829. - Various improvements to the sample scripts:
  4830. .. list-table::
  4831. :widths: 25 75
  4832. * - pilconvert
  4833. - Carries out some extra tricks in order to make
  4834. the resulting file as small as possible.
  4835. * - explode
  4836. - (NEW) Split an image sequence into individual frames.
  4837. * - gifmaker
  4838. - (NEW) Convert a sequence file into a GIF animation.
  4839. Note that the GIF encoder create "uncompressed" GIF
  4840. files, so animations created by this script are
  4841. rather large (typically 2-5 times the compressed
  4842. sizes).
  4843. * - image2py
  4844. - (NEW) Convert a single image to a python module. See
  4845. comments in this script for details.
  4846. * - player
  4847. - If multiple images are given on the command line,
  4848. they are interpreted as frames in a sequence. The
  4849. script assumes that they all have the same size.
  4850. Also note that this script now can play FLI/FLC
  4851. and GIF animations.
  4852. This player can also execute embedded Python
  4853. animation applets (ARG format only).
  4854. * - viewer
  4855. - Transparent images ("P" with transparency property,
  4856. and "RGBA") are superimposed on the standard Tk background.
  4857. - Fixed colour argument to "new". For multilayer images, pass a
  4858. tuple: (Red, Green, Blue), (Red, Green, Blue, Alpha), or (Cyan,
  4859. Magenta, Yellow, Black).
  4860. - Added XPM (X pixmap) read support.
  4861. 0.2b3
  4862. -----
  4863. - Added MNG (multi-image network graphics) read support. "Ming"
  4864. is a proposed animation standard, based on the PNG file format.
  4865. You can use the "player" sample script to display some flavours
  4866. of this format. The MNG standard is still under development,
  4867. as is this driver. More information, including sample files,
  4868. can be found at <ftp://swrinde.nde.swri.edu/pub/mng>
  4869. - Added a "verify" method to images loaded from file. This method
  4870. scans the file for errors, without actually decoding the image
  4871. data, and raises a suitable exception if it finds any problems.
  4872. Currently implemented for PNG and MNG files only.
  4873. - Added support for interlaced GIF images.
  4874. - Added PNG read support -- if linked with the ZLIB compression library,
  4875. PIL reads all kinds of PNG images, except interlaced files.
  4876. - Improved PNG identification support -- doesn't mess up on unknown
  4877. chunks, identifies all possible PNG modes, and verifies checksum
  4878. on PNG header chunks.
  4879. - Added an experimental reader for placable Windows Meta Files (WMF).
  4880. This reader is still very incomplete, but it illustrates how PIL's
  4881. drawing capabilities can be used to render vector and metafile
  4882. formats.
  4883. - Added restricted drivers for images from Image Tools (grayscale
  4884. only) and LabEye/IFUNC (common interchange modes only).
  4885. - Some minor improvements to the sample scripts provided in the
  4886. "Scripts" directory.
  4887. - The test images have been moved to the "Images" directory.
  4888. 0.2b2 released. 0.2b1 released for Windows only
  4889. -----------------------------------------------
  4890. - Fixed filling of complex polygons. The ImageDraw "line" and
  4891. "polygon" methods also accept Path objects.
  4892. - The ImageTk "PhotoImage" object can now be constructed directly
  4893. from an image. You can also pass the object itself to Tkinter,
  4894. instead of using the "image" attribute. Finally, using "paste"
  4895. on a displayed image automatically updates the display.
  4896. - The ImageTk "BitmapImage" object allows you to create transparent
  4897. overlays from 1-bit images. You can pass the object itself to
  4898. Tkinter. The constructor takes the same arguments as the Tkinter
  4899. BitmapImage class; use the "foreground" option to set the colour
  4900. of the overlay.
  4901. - Added a "putdata" method to the Image class. This can be used to
  4902. load a 1-layer image with data from a sequence object or a string.
  4903. An optional floating point scale and offset can be used to adjust
  4904. the data to fit into the 8-bit pixel range. Also see the "getdata"
  4905. method.
  4906. - Added the EXTENT method to the Image "transform" method. This can
  4907. be used to quickly crop, stretch, shrink, or mirror a subregion
  4908. from another image.
  4909. - Adapted to Python 1.4.
  4910. - Added a project makefile for Visual C++ 4.x. This allows you to
  4911. easily build a dynamically linked version of PIL for Windows 95
  4912. and NT.
  4913. - A Tk "booster" patch for Windows is available. It gives dramatic
  4914. performance improvements for some displays. Has been tested with
  4915. Tk 4.2 only, but is likely to work with Tk 4.1 as well. See the Tk
  4916. subdirectory for details.
  4917. - You can now save 1-bit images in the XBM format. In addition, the
  4918. Image class now provides a "tobitmap" method which returns a string
  4919. containing an XBM representation of the image. Quite handy to use
  4920. with Tk.
  4921. - More conversions, including "RGB" to "1" and more.
  4922. 0.2a1
  4923. -----
  4924. - Where earlier versions accepted lists, this version accepts arbitrary
  4925. Python sequences (including strings, in some cases). A few resource
  4926. leaks were plugged in the process.
  4927. - The Image "paste" method now allows the box to extend outside
  4928. the target image. The size of the box, the image to be pasted,
  4929. and the optional mask must still match.
  4930. - The ImageDraw module now supports filled polygons, outlined and
  4931. filled ellipses, and text. Font support is rudimentary, though.
  4932. - The Image "point" method now takes an optional mode argument,
  4933. allowing you to convert the image while translating it. Currently,
  4934. this can only be used to convert "L" or "P" images to "1" images
  4935. (creating thresholded images or "matte" masks).
  4936. - An Image "getpixel" method has been added. For single band images,
  4937. it returns the pixel value at a given position as an integer.
  4938. For n-band images, it returns an n-tuple of integers.
  4939. - An Image "getdata" method has been added. It returns a sequence
  4940. object representing the image as a 1-dimensional array. Only len()
  4941. and [] can be used with this sequence. This method returns a
  4942. reference to the existing image data, so changes in the image
  4943. will be immediately reflected in the sequence object.
  4944. - Fixed alignment problems in the Windows BMP writer.
  4945. - If converting an "RGB" image to "RGB" or "L", you can give a second
  4946. argument containing a colour conversion matrix.
  4947. - An Image "getbbox" method has been added. It returns the bounding
  4948. box of data in an image, considering the value 0 as background.
  4949. - An Image "offset" method has been added. It returns a new image
  4950. where the contents of the image have been offset the given distance
  4951. in X and/or Y direction. Data wraps between edges.
  4952. - Saves PDF images. The driver creates a binary PDF 1.1 files, using
  4953. JPEG compression for "L", "RGB", and "CMYK" images, and hex encoding
  4954. (same as for PostScript) for other formats.
  4955. - The "paste" method now accepts "1" masks. Zero means transparent,
  4956. any other pixel value means opaque. This is faster than using an
  4957. "L" transparency mask.
  4958. - Properly writes EPS files (and properly prints images to PostScript
  4959. printers as well).
  4960. - Reads 4-bit BMP files, as well as 4 and 8-bit Windows ICO and CUR
  4961. files. Cursor animations are not supported.
  4962. - Fixed alignment problems in the Sun raster loader.
  4963. - Added "draft" and "thumbnail" methods. The draft method is used
  4964. to optimize loading of JPEG and PCD files, the thumbnail method is
  4965. used to create a thumbnail representation of an image.
  4966. - Added Windows display support, via the ImageWin class (see the
  4967. handbook for details).
  4968. - Added raster conversion for EPS files. This requires GNU or Aladdin
  4969. Ghostscript, and probably works on UNIX only.
  4970. - Reads PhotoCD (PCD) images. The base resolution (768x512) can be
  4971. read from a PhotoCD file.
  4972. - Eliminated some compiler warnings. Bindings now compile cleanly in C++
  4973. mode. Note that the Imaging library itself must be compiled in C mode.
  4974. - Added "bdf2pil.py", which converts BDF fonts into images with associated
  4975. metrics. This is definitely work in progress. For info, see description
  4976. in script for details.
  4977. - Fixed a bug in the "ImageEnhance.py" module.
  4978. - Fixed a bug in the netpbm save hack in "GifImagePlugin.py"
  4979. - Fixed 90 and 270 degree rotation of rectangular images.
  4980. - Properly reads 8-bit TIFF palette-color images.
  4981. - Reads plane separated RGB and CMYK TIFF images.
  4982. - Added driver debug mode. This is enabled by setting Image.DEBUG
  4983. to a non-zero value. Try the -D option to "pilfile.py" and see what
  4984. happens.
  4985. - Don't crash on "atend" constructs in PostScript files.
  4986. - Only the Image module imports _imaging directly. Other modules
  4987. should refer to the binding module as "Image.core".
  4988. 0.0 to 0.1 (b1)
  4989. ---------------
  4990. - A handbook is available (distributed separately).
  4991. - The coordinate system is changed so that (0,0) is now located
  4992. in the upper left corner. This is in compliancy with ISO 12087
  4993. and 90% of all other image processing and graphics libraries.
  4994. - Modes "1" (bilevel) and "P" (palette) have been introduced. Note
  4995. that bilevel images are stored with one byte per pixel.
  4996. - The Image "crop" and "paste" methods now accepts None as the
  4997. box argument, to refer to the full image (self, that is).
  4998. - The Image "crop" method now works properly.
  4999. - The Image "point" method is now available. You can use either a
  5000. lookup table or a function taking one argument.
  5001. - The Image join function has been renamed to "merge".
  5002. - An Image "composite" function has been added. It is identical
  5003. to copy() followed by paste(mask).
  5004. - An Image "eval" function has been added. It is currently identical
  5005. to point(function); that is, only a single image can be processed.
  5006. - A set of channel operations has been added. See the "ImageChops"
  5007. module, test_chops.py, and the handbook for details.
  5008. - Added the "pilconvert" utility, which converts image files. Note
  5009. that the number of output formats are still quite restricted.
  5010. - Added the "pilfile" utility, which quickly identifies image files
  5011. (without loading them, in most cases).
  5012. - Added the "pilprint" utility, which prints image files to PostScript
  5013. printers.
  5014. - Added a rudimentary version of the "pilview" utility, which is
  5015. simple image viewer based on Tk. Only File/Exit and Image/Next
  5016. works properly.
  5017. - An interface to Tk has been added. See "Lib/ImageTk.py" and README
  5018. for details.
  5019. - An interface to Jack Jansen's Img library has been added (thanks to
  5020. Jack). This allows you to read images through the Img extensions file
  5021. format handlers. See the file "Lib/ImgExtImagePlugin.py" for details.
  5022. - PostScript printing is provided through the PSDraw module. See the
  5023. handbook for details.