An efficient by-example texture synthesis algorithm is proposed in this paper based on the graph-based synthesis framework, which is adapted to be much more widely applicable and better at preserving large-scale features. Output is obtained by successively performing two unidirectional synthesis processes. Each process assembles strips from the source to reach the desired dimension, which can be cast as a constrained shortest path problem in the generative graph. The strips are formed by consecutive cuts, which are obtained in preprocessing with a redesigned mechanism accounting for both global and local matching errors. After synthesis, only the paths need to be stored in memory, and textures can be reconstructed during rendering. Two synthesis modes are provided: unconstrained and constrained. For the latter, starting and ending positions of the synthesis result can be elastically controlled by user-provided heuristics, which relieves the problem that the shortest path may not exist when the cut set is small. Experimental results show that the synthesis quality of the proposed algorithm for both architectural textures and general textures is higher than the original, and the synthesis speed is greatly improved. © 2011 Binary Information Press December, 2011.