[{"data":1,"prerenderedAt":386},["ShallowReactive",2],{"navigation":3,"\u002Fguides\u002Fpython-bindings":99,"\u002Fguides\u002Fpython-bindings-surround":381},[4,23,44,78],{"title":5,"path":6,"stem":7,"children":8,"icon":22},"Getting Started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,12,17],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-house",{"title":13,"path":14,"stem":15,"icon":16},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":18,"path":19,"stem":20,"icon":21},"MCP Setup","\u002Fgetting-started\u002Fmcp-setup","1.getting-started\u002F3.mcp-setup","i-lucide-plug","i-lucide-rocket",{"title":24,"icon":25,"path":26,"stem":27,"children":28,"page":43},"CLI","i-lucide-terminal","\u002Fcli","2.cli",[29,33,38],{"title":30,"path":31,"stem":32,"icon":25},"Usage","\u002Fcli\u002Fusage","2.cli\u002F1.usage",{"title":34,"path":35,"stem":36,"icon":37},"Options","\u002Fcli\u002Foptions","2.cli\u002F2.options","i-lucide-sliders-horizontal",{"title":39,"path":40,"stem":41,"icon":42},"Batch & JSON","\u002Fcli\u002Fbatch-json","2.cli\u002F3.batch-json","i-lucide-package",false,{"title":45,"icon":46,"path":47,"stem":48,"children":49,"page":43},"Providers","i-lucide-cpu","\u002Fproviders","3.providers",[50,55,60,65,70,74],{"title":51,"path":52,"stem":53,"icon":54},"Claude (Area-Based)","\u002Fproviders\u002Fclaude","3.providers\u002F1.claude","i-lucide-square",{"title":56,"path":57,"stem":58,"icon":59},"GPT-4o & GPT-5 (Tiling)","\u002Fproviders\u002Fgpt","3.providers\u002F2.gpt","i-lucide-grid-2x2",{"title":61,"path":62,"stem":63,"icon":64},"Gemini (Large Tiles)","\u002Fproviders\u002Fgemini","3.providers\u002F3.gemini","i-lucide-grid-3x3",{"title":66,"path":67,"stem":68,"icon":69},"Llama Vision (Tiles)","\u002Fproviders\u002Fllama","3.providers\u002F4.llama","i-simple-icons-meta",{"title":71,"path":72,"stem":73,"icon":64},"Qwen-VL (Patch Grid)","\u002Fproviders\u002Fqwen","3.providers\u002F5.qwen",{"title":75,"path":76,"stem":77,"icon":59},"DeepSeek-VL (Open Weights)","\u002Fproviders\u002Fdeepseek","3.providers\u002F6.deepseek",{"title":79,"icon":80,"path":81,"stem":82,"children":83,"page":43},"Guides","i-lucide-book-open","\u002Fguides","4.guides",[84,89,94],{"title":85,"path":86,"stem":87,"icon":88},"Python Bindings","\u002Fguides\u002Fpython-bindings","4.guides\u002F1.python-bindings","i-lucide-file-code",{"title":90,"path":91,"stem":92,"icon":93},"Sandbox (Think in Code)","\u002Fguides\u002Fsandbox","4.guides\u002F2.sandbox","i-lucide-flask-conical",{"title":95,"path":96,"stem":97,"icon":98},"Crawler Integration","\u002Fguides\u002Fcrawler-integration","4.guides\u002F3.crawler-integration","i-lucide-globe",{"id":100,"title":85,"body":101,"description":374,"extension":375,"links":376,"meta":377,"navigation":378,"path":86,"seo":379,"stem":87,"__hash__":380},"docs\u002F4.guides\u002F1.python-bindings.md",{"type":102,"value":103,"toc":366},"minimark",[104,112,138,143,149,233,255,260,275,280,295,299,362],[105,106,107,111],"p",{},[108,109,110],"code",{},"pip install vision-squeezer"," ships native wheels (pyo3 + maturin) for Linux, macOS, and Windows. No Rust toolchain required.",[113,114,120],"pre",{"className":115,"code":116,"filename":117,"language":118,"meta":119,"style":119},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pip install vision-squeezer\n","Terminal","bash","",[108,121,122],{"__ignoreMap":119},[123,124,127,131,135],"span",{"class":125,"line":126},"line",1,[123,128,130],{"class":129},"sBMFI","pip",[123,132,134],{"class":133},"sfazB"," install",[123,136,137],{"class":133}," vision-squeezer\n",[139,140,142],"h2",{"id":141},"api","API",[144,145,147],"h3",{"id":146},"optimize_image",[108,148,146],{},[113,150,154],{"className":151,"code":152,"language":153,"meta":119,"style":119},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import vision_squeezer as vs\n\nreport = vs.optimize_image(\n    \"screenshot.png\",          # str path or bytes\n    model=\"claude\",            # claude | gpt4o | gpt5 | gemini\n    quality=75,\n    format=\"jpeg\",             # jpeg | webp | avif\n    smart_crop=False,\n    auto_quality=None,         # e.g. 0.95 to target SSIM\n    output_path=None,          # write to disk if set\n)\n\nprint(report[\"tokens_saved\"], report[\"size_reduction_pct\"])\n","python",[108,155,156,161,168,174,180,186,192,198,204,210,216,222,227],{"__ignoreMap":119},[123,157,158],{"class":125,"line":126},[123,159,160],{},"import vision_squeezer as vs\n",[123,162,164],{"class":125,"line":163},2,[123,165,167],{"emptyLinePlaceholder":166},true,"\n",[123,169,171],{"class":125,"line":170},3,[123,172,173],{},"report = vs.optimize_image(\n",[123,175,177],{"class":125,"line":176},4,[123,178,179],{},"    \"screenshot.png\",          # str path or bytes\n",[123,181,183],{"class":125,"line":182},5,[123,184,185],{},"    model=\"claude\",            # claude | gpt4o | gpt5 | gemini\n",[123,187,189],{"class":125,"line":188},6,[123,190,191],{},"    quality=75,\n",[123,193,195],{"class":125,"line":194},7,[123,196,197],{},"    format=\"jpeg\",             # jpeg | webp | avif\n",[123,199,201],{"class":125,"line":200},8,[123,202,203],{},"    smart_crop=False,\n",[123,205,207],{"class":125,"line":206},9,[123,208,209],{},"    auto_quality=None,         # e.g. 0.95 to target SSIM\n",[123,211,213],{"class":125,"line":212},10,[123,214,215],{},"    output_path=None,          # write to disk if set\n",[123,217,219],{"class":125,"line":218},11,[123,220,221],{},")\n",[123,223,225],{"class":125,"line":224},12,[123,226,167],{"emptyLinePlaceholder":166},[123,228,230],{"class":125,"line":229},13,[123,231,232],{},"print(report[\"tokens_saved\"], report[\"size_reduction_pct\"])\n",[105,234,235,236,239,240,243,244,247,248,250,251,254],{},"Inputs accept both ",[108,237,238],{},"str"," (file paths) and ",[108,241,242],{},"bytes"," (raw image data). The returned ",[108,245,246],{},"dict"," contains ",[108,249,242],{},", ",[108,252,253],{},"base64",", dimensions, byte counts, token counts, and the chosen quality.",[144,256,258],{"id":257},"estimate_tokens",[108,259,257],{},[113,261,263],{"className":151,"code":262,"language":153,"meta":119,"style":119},"vs.estimate_tokens(width=2400, height=1670, model=\"claude\")\n# -> { \"tokens\": ... }\n",[108,264,265,270],{"__ignoreMap":119},[123,266,267],{"class":125,"line":126},[123,268,269],{},"vs.estimate_tokens(width=2400, height=1670, model=\"claude\")\n",[123,271,272],{"class":125,"line":163},[123,273,274],{},"# -> { \"tokens\": ... }\n",[144,276,278],{"id":277},"optimal_dimensions",[108,279,277],{},[113,281,283],{"className":151,"code":282,"language":153,"meta":119,"style":119},"vs.optimal_dimensions(width=4096, height=3072, model=\"gpt4o\")\n# -> { \"width\": ..., \"height\": ... }\n",[108,284,285,290],{"__ignoreMap":119},[123,286,287],{"class":125,"line":126},[123,288,289],{},"vs.optimal_dimensions(width=4096, height=3072, model=\"gpt4o\")\n",[123,291,292],{"class":125,"line":163},[123,293,294],{},"# -> { \"width\": ..., \"height\": ... }\n",[139,296,298],{"id":297},"pipeline-example","Pipeline example",[113,300,302],{"className":151,"code":301,"language":153,"meta":119,"style":119},"import vision_squeezer as vs\n\n# Estimate before committing\nest = vs.estimate_tokens(4096, 3072, model=\"gpt4o\")\nif est[\"tokens\"] > 1000:\n    vs.optimize_image(\n        \"large.png\",\n        model=\"gpt4o\",\n        auto_quality=0.95,\n        format=\"avif\",\n        output_path=\"large.optimized.avif\",\n    )\n",[108,303,304,308,312,317,322,327,332,337,342,347,352,357],{"__ignoreMap":119},[123,305,306],{"class":125,"line":126},[123,307,160],{},[123,309,310],{"class":125,"line":163},[123,311,167],{"emptyLinePlaceholder":166},[123,313,314],{"class":125,"line":170},[123,315,316],{},"# Estimate before committing\n",[123,318,319],{"class":125,"line":176},[123,320,321],{},"est = vs.estimate_tokens(4096, 3072, model=\"gpt4o\")\n",[123,323,324],{"class":125,"line":182},[123,325,326],{},"if est[\"tokens\"] > 1000:\n",[123,328,329],{"class":125,"line":188},[123,330,331],{},"    vs.optimize_image(\n",[123,333,334],{"class":125,"line":194},[123,335,336],{},"        \"large.png\",\n",[123,338,339],{"class":125,"line":200},[123,340,341],{},"        model=\"gpt4o\",\n",[123,343,344],{"class":125,"line":206},[123,345,346],{},"        auto_quality=0.95,\n",[123,348,349],{"class":125,"line":212},[123,350,351],{},"        format=\"avif\",\n",[123,353,354],{"class":125,"line":218},[123,355,356],{},"        output_path=\"large.optimized.avif\",\n",[123,358,359],{"class":125,"line":224},[123,360,361],{},"    )\n",[363,364,365],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":119,"searchDepth":126,"depth":163,"links":367},[368,373],{"id":141,"depth":163,"text":142,"children":369},[370,371,372],{"id":146,"depth":170,"text":146},{"id":257,"depth":170,"text":257},{"id":277,"depth":170,"text":277},{"id":297,"depth":163,"text":298},"Use VisionSqueezer from Python via native pyo3 wheels.","md",null,{},{"icon":88},{"title":85,"description":374},"Kydj59WJqnSfUemcjNQJ-5HYClDvhcAEZDWWZlzMBEI",[382,384],{"title":75,"path":76,"stem":77,"description":383,"icon":59,"children":-1},"How DeepSeek-VL2 tiles images at 384px and why the win is local-inference context, not API billing.",{"title":90,"path":91,"stem":92,"description":385,"icon":93,"children":-1},"Run atomic image operations locally to extract only the context the LLM needs.",1782053692954]