Случайное удаление частей изображения / пикселей

Мне интересно, знает ли кто-нибудь, как я могу случайно удалить / удалить определенные части изображения. Есть ли какой-то фильтр для этого, где я могу указать% картинки, которую я хочу удалить? (Я заканчиваю свои поиски в Google.)

1 ответ

Вы можете исправить что-то вроде этого: это не очень эффективно! Как это зацикливание на выделение, а затем удаляя эти пиксели. Снова и снова.

Я попробовал его с изображением размером 1 МБ и удалением 50 %, это заняло пару минут. Так что вы предупреждены.

// call the source document
var srcDoc = app.activeDocument;

// Get original width and height
var imageWidth = srcDoc.width.value;
var imageHeight = srcDoc.height.value;

// Selection size for deleting pixels
// You could make these random
var sizeX = 20;
var sizeY = 20;

// Define the number of parts you want to delete
// Area of image = imageWidth * imageHeight
// Example image 1600 x 1200, area = 1920000 pixels
// To delete 50% would be the same as selecting
// an area that's (sizeX * sizeY) *2400 times

var pcent = 0.1; //10% of image

var area = imageWidth * imageHeight;
var selArea = sizeX * sizeY; //selection area
var numParts = pcent * (area/ selArea);
numParts = parseInt(numParts);


for (var i = 0; i < numParts; i++)
{

  var randX = Math.floor(Math.random() * (imageWidth-sizeX));
  var randY = Math.floor(Math.random() * (imageHeight-sizeY));
  // deselect EVERYTHING first
  srcDoc.selection.deselect();

  // select random position of selection
  selectRectangle(randY, randX, randY+sizeY, randX+sizeX);

  // Delete those pixels
  srcDoc.selection.clear();

  // deselect EVERYTHING first
  srcDoc.selection.deselect();
}

// function SELECT RECTANGLE(top, left, bottom, right)
//
// Note: co-ordinates are same as script listener
// and not so human-friendly as t,l,r,b.
// --------------------------------------------------------
function selectRectangle(top, left, bottom, right)
{
  // =======================================================
  var id1 = charIDToTypeID( "setd" );
  var desc1 = new ActionDescriptor();
  var id2 = charIDToTypeID( "null" );
  var ref1 = new ActionReference();
  var id3 = charIDToTypeID( "Chnl" );
  var id4 = charIDToTypeID( "fsel" );
  ref1.putProperty( id3, id4 );
  desc1.putReference( id2, ref1 );
  var id5 = charIDToTypeID( "T   " );
  var desc2 = new ActionDescriptor();
  var id6 = charIDToTypeID( "Top " );
  var id7 = charIDToTypeID( "#Pxl" );
  desc2.putUnitDouble( id6, id7, top );
  var id8 = charIDToTypeID( "Left" );
  var id9 = charIDToTypeID( "#Pxl" );
  desc2.putUnitDouble( id8, id9, left );
  var id10 = charIDToTypeID( "Btom" );
  var id11 = charIDToTypeID( "#Pxl" );
  desc2.putUnitDouble( id10, id11, bottom );
  var id12 = charIDToTypeID( "Rght" );
  var id13 = charIDToTypeID( "#Pxl" );
  desc2.putUnitDouble( id12, id13, right );
  var id16 = charIDToTypeID( "Rctn" );
  desc1.putObject( id5, id16, desc2 );

   executeAction( id1, desc1, DialogModes.NO );

}
Другие вопросы по тегам