Wie teile ich ein Photoshop-Dokument in ein Raster auf?

7392
George Profenza

Wenn ich ein Photoshop-Dokument habe, das beispielsweise ein Bild enthält. Wie kann ich es in ein Raster einteilen? Ähnlich wie beim Wählen: - Wählen Sie ein Rechteck aus - neue Ebene über Ausschneiden - bewegen Sie sich zum nächsten Rechteck, vertikal wiederholen?

Alle Skripte / Plugins, die das automatisieren / parametrisieren?

0

3 Antworten auf die Frage

3
warrenkopp

Die einzige Möglichkeit, dies zu tun, besteht darin, ein Raster mit Hilfslinien zu gestalten und dann das Bild mit dem Slice-Werkzeug zu schneiden. Auf diese Weise können Sie das Bild in viele Einzelteile aufteilen. Nachdem Sie das Slice-Tool verwendet haben, können Sie „Für Web speichern“ und nur die Slices als jeweils separate Bilddatei exportieren.

Danke, aber ich fürchte, das ist zu langatmig, dafür bin ich zu faul :) George Profenza vor 14 Jahren 0
1
S.gfx

Es ist einer Frage ähnlich, die ich hier beantwortet habe: Ich habe ein kostenloses Tool empfohlen, mit dem Sie dies tun können, exportieren Sie das PNG, laden Sie das PNG dort und drücken Sie die Taste ....

Es wurden auch andere Soutions vorgeschlagen.

Bildbearbeitungsprogramm, das das Speichern mehrerer, getrennter, gleichzeitiger Ausschnittauswahlen ermöglicht (auf der Suche nach kostenlosen und kostenpflichtigen Programmen)

1
George Profenza

All nice answers, thanks for the contribution.

As I said, I wondering if there was something out there for Photoshop.

For documentation purposes here is a little script I wrote:

var doc = app.activeDocument; var arranger = makeDialog(); arranger .arrange.onClick = function(){ if(isNaN(parseInt(arranger.w.text)) || isNaN(parseInt(arranger.h.text)) || isNaN(parseInt(arranger.c.text)) || isNaN(parseInt(arranger.r.text))){ alert('Yo! Can you feed \' dis dialog some integer numbers ?\n For Real!'); }else{ sliceLayer(parseInt(arranger.w.text),parseInt(arranger.h.text),parseInt(arranger.r.text),parseInt(arranger.c.text)); } arranger.close(); } arranger.show(); function sliceLayer(w,h,r,c){ var hw = w * 0.5; var hh = h * 0.5; var l0 = doc.activeLayer; for(var j = 0 ; j < r ; j++){ for(var i = 0 ; i < c; i++){ var x = i * w; //edited var y = j * h; //here //select doc.selection.select([[x,y],[x+w,y],[x+w,y+h],[x,y+h]]); //new layer via cut doc.selection.cut(); var layer = doc.artLayers.add(); doc.paste(); //move //$.writeln('translate x: '+(y)+', y: '+(x)); layer.translate(y,x); doc.activeLayer = l0; } } l0.remove();//remove original layer(now empty) } function makeDialog(){ var dialog = new Window('dialog','Slice and Dice'); dialog.frameLocation = [300,300]; dialog.w = dialog.add('edittext',undefined,'Selection width'); dialog.w.prefferedSize = [200,50]; dialog.h = dialog.add('edittext',undefined,'Selection height'); dialog.h.prefferedSize = [200,50]; dialog.c = dialog.add('edittext',undefined,'Grid Columns(V sections)'); dialog.c.prefferedSize = [200,50]; dialog.r = dialog.add('edittext',undefined,'Grid Rows(H sections)'); dialog.r.prefferedSize = [200,50]; dialog.arrange = dialog.add('button',undefined,'Chop Chop'); return dialog; } 

If you save this in Photoshop/Presets/Scripts, you should be able to access it through Scripts in the File menu.

The problem with the JSX approach is, it is a bit slow for large subdivisions (100x100).

I'm guessing it will be faster to try with MATLAB/Photoshop communication, but I'll skip that for now.

Achieved the same goal in actionscript 3 using copyPixels() and it's pretty fast.