[Tónlist spila] ZAMYLA CHAN: blása skulum það upp með búa. Í búa, the notandi vilja fara í, með stjórn lína, punktamynd mynd sem þeir vilja að þú mælikvarði af mörgum að þeir fara líka í, í stjórn lína. Hvernig gerum við þetta? Jæja, fyrst hlutur fyrstur, við skulum brjóta þetta niður í skrefum. Þú ert að fara til að vilja opna INFILE að þeir gefa þér, eins og heilbrigður eins og búa til og opna OUTFILE sem þú ert að fara að setja búa ímynd inn Þá, því að þú ert að breyta stærð, og því það er punktamynd, það haus, svo þú ert að fara að einnig uppfæra haus upplýsingar fyrir OUTFILE, og skrifa það inn Þá ert þú að fara að lesa inn að scanline af INFILE, pixla-fyrir-pixla, breyta stærð lárétt og skrifa þær punktar inn í OUTFILE, eins og tilgreint eftir mælikvarða notandans. Þú ert að fara að muna að bæta padding eins og þörf krefur. Meira um það síðar. Og þá, einnig búa lóðrétt. OK. Þannig að þetta er að fara til vera a lítill hluti fleiri flókið en hver gert það, en hvað er svipað er að copy.c mun, aftur, sanna mjög gagnleg. Mundu að copy.c opnar skrána, uppfærir hausinn upplýsingar fyrir OUTFILE, þá les í scanline, pixla-fyrir-pixla, skrifa hvert pixla í scanline the framleiðsla skrá er. Svo aftur, gæti fyrsta skrefið sennilega vera að CP, copy.c, resize.c í PSET5 möppuna. Mundu þó, áður en þú afritað það, að ganga úr skugga um að þú skiljir copy.c mjög rækilega. OK. Svo skulum opna skrá. Þú veist hvernig á að gera það. Ég ætla að yfirgefa það fyrir þig. Næst skaltu uppfæra haus fyrir OUTFILE. Vegna þess að við höfum nýja punktamynd, við höfum nýja haus upplýsingar. Hvað er að breytast hér? Jæja, the skrá stærð er að fara að breyta vegna þess að við erum að fara að hafa meira punktar en áður. Stærð mynda er, svona, einnig að fara að breyta, eins og er breidd og hæð. Svo sem breytur eru þeir, nákvæmlega? Jæja, ef þú lítur inn í haus upplýsingar, sjá þig það er biSizeImage, sem táknar samtals stærð myndarinnar í bætum, þ.mt punkta og padding. biWidth er breidd myndarinnar í dílar, mínus padding. biHeight er hæð myndarinnar í punktum. Og svo þeir eru að finna í structs BITMAPFILEHEADER og BITMAPINFOHEADER. Þú getur sagt hver einn er hver með fara að bmp.h og horfir á BITMAPINFOHEADER strúktúr og sjá sem breytur eru skráð þar. Svo til að uppfæra outfiles haus upplýsingar, þú ert að fara til að vilja breyta þeim gildum sem hæð og breidd. En líkurnar eru, þú gætir þurft nokkur á haus í INFILE er síðar, þannig best að halda utan um bæði. En vera mjög skýr með þínu breyta nöfn svo að þú gerir ekki óvart skrifa rangt gildi í haus fyrir OUTFILE. Svo nú skulum við fá að lesa inn að scanline pixla-við-pixla. Aftur erum við að fara að snúa sér til traustur okkar skrá I / O bókasafn og líta á á fread virka. fread tekur í bendi til strúktúrinn sem mun innihalda bæti sem þú ert að lesa í, stærð hvers þáttur sem þú ert að lesa - aftur, sizeof er að fara að vera gagnlegt virka hér, fjölda af þættir stærð, stærð, sem þú ert lesa í, og síðan að lokum, inpointer, skrá sem þú ert að lesa úr. Svo þú ert að taka númer þætti af stærð frá inpointer og setja þau í gögnum. Nú er kominn tími til að búa lárétt. ef n er jafnt 2, þá fyrir hvern pixla í á INFILE, við erum að fara að skrifa það tvisvar í OUTFILE. Hvernig eigum við að skrifa skrá? Jæja, höfum við fwrite virka, svo við höfum tekið bendi á strúktúrinn sem inniheldur bytes sem þú ert að skrifa frá, og þá erum við að gefa í stærð, númer og framleiðsla, þar þú ert að fara að vera að skrifa það. Og þá til að endurtaka ferlið, verður fær einfalt endurtekningu til hliðar. En við þurfum að muna að bæta padding inn Hugmyndin um padding er að vel Hver pixla er þrjú bit, en stærð hvers scanline Verða vera margfeldi af 4 bæti. Þannig að ef fjöldi punkta er ekki margfeldi af 4, þurfum við að bæta við nokkrum padding, sem er bara zeroes. Nú, ólíkt Hver gert það, og ólíkt afrita, þá INFILE ímynd og OUTFILE skrá hafa öðruvísi hafa mismunandi padding því þeir eru mismunandi breiddum. OK. Svo kannski uppskrift vildi koma sér vel hér. Ég skal fara með það til þín til að finna það út, en segja þér það, að skrifa padding, Jæja, það er bara einfalt fputc virka, liggur í eðli sem þú vilt að skrifa, og þá skráin músina sem þú langar að skrifa til. Svo nú er að við höfum breytt lárétt, og síðan notað padding, mundu að þú þarft að færa skrá þína stöðu vísir, því þú getur ekki fread inn padding. Svo þú vilja til vera viss um að skrá staða vísir í INFILE er í réttum stað. Vegna þess að við viljum líka að búa lóðrétt. Við getum ekki bara teygja það lárétt, vegna þess að sérhver röð þarfir að afrita n sinnum. Nú, það eru nokkrir mismunandi leiðir til að gera þetta. Svo einn, getum við notað umrita aðferð, í að við muna öll dílar af tiltekinni röð í fylki, og þá erum við að skrifa þessi fylking sem oft og þörf krefur. Eða það er recopy aðferð þar, eftir að hafa lesið í eina röð í INFILE og þá skrifa það inn í the OUTFILE, bæta padding, fseek við aftur til the byrjun af upprunalegri röð, og þá endurtaka lárétt resizing þaðan. Óháð því hvaða aðferð, þó, þú munt vil að allir punkta til að endurtaka n sinnum, og í hvert róður að vera endurtekin n sinnum eins vel. Með þessi, munt þú hafa punktamynd stærri en lífið. Mitt nafn er Zamyla, og þetta er CS50.