锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲av永久无码精品漫画,亚洲一区二区高清,国产精品亚洲精品久久精品http://m.tkk7.com/pudgy/category/2880.html<SCRIPT> var dict_width = 'auto' var dict_height = '72px' var dict_background = 'transparent' var dict_border = '0px dotted #000000' var dict_textColor = '#6FBC4C' var dict_fontSize = '100%' var dict_encoding = 'Utf-8' </SCRIPT> <SCRIPT src="http://livid.cn/services/fortune"></SCRIPT> <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script>zh-cnThu, 01 Mar 2007 12:15:42 GMTThu, 01 Mar 2007 12:15:42 GMT60Thumbnail.java - Load an image, scale it to thumbnail size and save it as JPEGhttp://m.tkk7.com/Pudgy/archive/2005/08/29/11457.htmlPudgy's WorldPudgy's WorldMon, 29 Aug 2005 08:12:00 GMThttp://m.tkk7.com/Pudgy/archive/2005/08/29/11457.htmlhttp://m.tkk7.com/Pudgy/comments/11457.htmlhttp://m.tkk7.com/Pudgy/archive/2005/08/29/11457.html#Feedback0http://m.tkk7.com/Pudgy/comments/commentRss/11457.htmlhttp://m.tkk7.com/Pudgy/services/trackbacks/11457.htmlFrom http://schmidt.devlib.org/java/save-jpeg-thumbnail.html

Thumbnail.java - Load an image, scale it to thumbnail size and save it as JPEG

This programm loads an image via java.awt.Toolkit, scales it down to a user-defined resolution and saves it as a JPEG file. The first part, the loading of the original image, is done the same way as in Viewer. So if you don't know yet how loading images with Toolkit works you might want to study that program first.

Different from Viewer, this program (Thumbnail) works on the command line. So you won't get any windows or other graphical user interface components. The only visual feedback is the word Done. after the program successfully terminated.

To use this program do the following:

  • Save the program's source code as Thumbnail.java (regard case).
  • Open a shell (prompt), go to the directory where Thumbnail.java is and compile it:
    javac Thumbnail.java
    You should now have a new class file Thumbnail.class.
  • Run the program with five parameters for image file, thumbnail file, thumbnail width and thumbnail height and quality (a value from 0 to 100, 100 being the best and 0 the worst quality), e.g.:
    java Thumbnail c:\image.jpg c:\thumbnail.jpg 120 80 75
    The file image.jpg must exist already, thumbnail.jpg will be created (and any existing file of that name overwritten).

You will need Java 1.2 or higher to successfully run this program. The com.sun.image.codec.jpeg package that will be used for saving the thumbnail is not available with all Java development kits, but as long as you are using a Sun JDK, it should be present.

With Java 1.4 a new way of writing JPEG files was introduced, the image I/O library in the package javax.imageio. See the Screenshot.java example program. It saves as PNG, but all you have to do is change the second argument of ImageIO.write from png to jpg. The advantage of ImageIO: It is available with each 1.4+ JDK and JRE, not only those coming from Sun.

Explanation

Now let's see how this program works. First, it is checked that we have exactly five arguments. If this is not the case, an error message is printed to output and the program terminates.

Next, the input image is loaded via Toolkit and MediaTracker just as it was done in Viewer.

The third and fourth program argument contain the maximum size of the thumbnail to be created. The actual size of the thumbnail will be computed from that maximum size and the actual size of the image (all sizes are given as pixels). The code that does this is not really very readable, and also not essential to loading and saving image files. But it is necessary to create a thumbnail that is scaled correctly.

As an example, if the two arguments for the maximum thumbnail size are both 100 and the image that was loaded is 400 times 200 pixels large, we want the thumbnail to be 100 times 50 pixels large, not 100 times 100, because the original image is twice as wide as it is high. A 100 times 100 pixel thumbnail would contain a very skewed version of the original image.

Now that we have determined the size of the thumbnail we create a BufferedImage of that size, named thumbImage. We ask for a Graphics2D object for that new thumbnail image and call its drawImage method to draw the original image on that new image. The call to drawImage does the actual scaling. The rendering hints for bilinear interpolation can be left out if quality is not that necessary and speed more important. For nicer results (at least in some cases) try RenderingHints.VALUE_INTERPOLATION_BICUBIC instead of RenderingHints.VALUE_INTERPOLATION_BILINEAR.

In order to save the scaled-down image to a JPEG file, we create a buffered FileOutputStream with the second argument as name and initialize the necessary objects from the com.sun.image.codec.jpeg package. The quality argument from the command line is converted from the interval 0 to 100 to the interval 0.0f to 1.0f, because that's what the codec expects (I mostly use 0.75f). The higher that quality number is, the better the resulting thumbnail image quality, but also the larger the resulting file.

The call to System.exit(0); is unfortunately necessary for some Java runtime environments (because of a bug that keeps the AWT thread from terminating).

Source code of Thumbnail.java

 
import com.sun.image.codec.jpeg.*;
import java.awt.
*
;
import java.awt.image.
*
;
import java.io.
*
;

/*
*
 * Thumbnail.java (requires Java 1.2+)
 * Load an image, scale it down and save it as a JPEG file.
 * @author Marco Schmidt
 
*/

public class Thumbnail {
  
public static void
 main(String[] args) throws Exception {
    
if (args.length != 5
) {
      System.err.println(
"Usage: java Thumbnail INFILE " +

        
"OUTFILE WIDTH HEIGHT QUALITY");
      System.exit(
1
);
    }
    
// load image from INFILE

    Image image = Toolkit.getDefaultToolkit().getImage(args[0]);
    MediaTracker mediaTracker 
= new MediaTracker(new
 Container());
    mediaTracker.addImage(image, 
0
);
    mediaTracker.waitForID(
0
);
    
// determine thumbnail size from WIDTH and HEIGHT

    int thumbWidth = Integer.parseInt(args[2]);
    
int thumbHeight = Integer.parseInt(args[3
]);
    
double thumbRatio = (double)thumbWidth / (double
)thumbHeight;
    
int imageWidth = image.getWidth(null
);
    
int imageHeight = image.getHeight(null
);
    
double imageRatio = (double)imageWidth / (double
)imageHeight;
    
if (thumbRatio <
 imageRatio) {
      thumbHeight 
= (int)(thumbWidth /
 imageRatio);
    } 
else
 {
      thumbWidth 
= (int)(thumbHeight *
 imageRatio);
    }
    
//
 draw original image to thumbnail image object and
    
// scale it to the new size on-the-fly

    BufferedImage thumbImage = new BufferedImage(thumbWidth, 
      thumbHeight, BufferedImage.TYPE_INT_RGB);
    Graphics2D graphics2D 
=
 thumbImage.createGraphics();
    graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
      RenderingHints.VALUE_INTERPOLATION_BILINEAR);
    graphics2D.drawImage(image, 
00, thumbWidth, thumbHeight, null
);
    
// save thumbnail image to OUTFILE

    BufferedOutputStream out = new BufferedOutputStream(new
      FileOutputStream(args[
1]));
    JPEGImageEncoder encoder 
= JPEGCodec.createJPEGEncoder(out
);
    JPEGEncodeParam param 
=
 encoder.
      getDefaultJPEGEncodeParam(thumbImage);
    
int quality = Integer.parseInt(args[4
]);
    quality 
= Math.max(0, Math.min(quality, 100
));
    param.setQuality((
float)quality / 100.0ffalse
);
    encoder.setJPEGEncodeParam(param);
    encoder.encode(thumbImage);
    
out
.close(); 
    System.
out.println("Done."
);
    System.exit(
0
);
  }
}


]]>
鍩轟簬Batik鐨凷VG搴旂敤: 鍏充簬鍑犱綍鍙樻崲http://m.tkk7.com/Pudgy/archive/2005/08/20/10572.htmlPudgy's WorldPudgy's WorldSat, 20 Aug 2005 00:55:00 GMThttp://m.tkk7.com/Pudgy/archive/2005/08/20/10572.htmlhttp://m.tkk7.com/Pudgy/comments/10572.htmlhttp://m.tkk7.com/Pudgy/archive/2005/08/20/10572.html#Feedback0http://m.tkk7.com/Pudgy/comments/commentRss/10572.htmlhttp://m.tkk7.com/Pudgy/services/trackbacks/10572.html

鎽樿嚜http://www-128.ibm.com/developerworks/cn/xml/x-BatikSvg/?ca=dwcn-newsletter-xml
闄堟煰

鎶鏈葷洃, 鍗椾含瀹夊厓縐戞妧
2005 騫?1 鏈?

鏈枃鏄綔鑰呭湪 SVGGIS 緋葷粺鐨勫紑鍙戝疄璺佃繃紼嬩腑鍏充簬 SVG 鍧愭爣杞崲鐨勬葷粨銆傚湪鎻忚堪 SVG 鍧愭爣鍙樻崲鍘熺悊鐨勫悓鏃訛紝浣跨敤 Apache Batik 欏圭洰瀹炵幇浜嗙浉鍏充緥瀛愩?/BLOCKQUOTE>

SVG 鏄竴縐嶇敤 xml 璇█鏉ユ弿榪頒簩緇村浘褰㈠璞$殑璇█錛孲VG 鍏佽涓夌鍥懼艦瀵硅薄錛?錛庣煝閲忓浘褰紝2錛庡浘鐗囷紝3錛庢枃鏈璞°傝繖涓夌鍥懼艦瀵硅薄閮藉彲浠ユ敮鎸佸垎緇勶紝浣跨敤鏍峰紡娓叉煋錛岃繘琛屽嚑浣曞彉鎹€?/P>

SVG 榪樿兘澶熼氳繃鑴氭湰鏉ュ疄鐜頒氦浜掓搷浣滃拰鍔ㄦ佹樉紺恒傚彲浠ラ氳繃瀹氫箟鍔ㄧ敾瀵硅薄鎴栦嬌鐢╯cript 鑴氭湰鏉ュ疄鐜板姩鐢匯?/P>

1. SVG 涓嬪嚑縐嶅父瑙佺殑鍑犱綍鍙樻崲鏂瑰紡

1.1 涓涓?SVG 渚嬪瓙
鎴戜滑棣栧厛鏉ョ湅涓涓?SVG 鐨勪緥瀛愶紝紿楀彛鍙充笂瑙掓湁鍥涗釜鑹插潡錛屾瘡涓壊鍧楁槸涓涓?0脳50鐨勭煩褰€?/P>

鍥?1. 涓涓?SVG 鐨勬牱鏈?/B>
鍥?1. 涓涓?SVG 鐨勬牱鏈? src=

鍥?2. 鏍鋒湰鏂囨。

<?xml version="1.0"?>
<svg >
    <g> 
	<rect x="0" y="0" width="50" height="50" style="fill:red" />
	<rect x="50" y="0" width="50" height="50" style="fill:yellow" />
	<rect x="0" y="50" width="50" height="50" style="fill:green" />
	<rect x="50" y="50" width="50" height="50" style="fill:black" />
    </g>
</svg>

1.2 浣跨敤 Adobe SVG Viewer 灞曠ず鍦?SVG 鏂囨。涓疄鐜扮殑鍑犱綍鍙樻崲
緙╂斁<g transform="scale(2)">

鍥?3. 鏀懼ぇ涓鍊?/B>
鍥?3. 鏀懼ぇ涓鍊? src=

騫崇Щ<g transform="translate(200 ,200)">

鍥?4. 騫崇Щ200錛?00涓儚绱?/B>
鍥?4. 騫崇Щ200錛?00涓儚绱? src=

鏃嬭漿<g transform="rotate(45)">

鍥?5. 欏烘椂閽堟棆杞?5搴?/B>
鍥?5. 欏烘椂閽堟棆杞?5搴? src=

妯垏<g transform="skewX(45)">

鍥?6. 浠?y 杞翠負鍩虹嚎鍦?X 鏂瑰悜妯垏45搴?/B>
鍥?6. 浠?y 杞翠負鍩虹嚎鍦?X 鏂瑰悜妯垏45搴? src=

2. 鍦?Batik 涓嬪疄鐜?SVG 鐨勫嚑浣曞彉鎹?/SPAN>

2.1 Batik 鐨勫熀紜鐭ヨ瘑
2.1.1 Batik 鐨勭敤閫?/B>

Batik 鏄熀浜?java 璇█瀹炵幇鐨勪竴涓?SVG 搴旂敤鐨勫伐鍏烽泦錛岀敤浜庡疄鐜板 SVG 瀵硅薄鐨勬樉紺恒佺紪杈戜互鍙婂皢 SVG 鍥懼艦瀵硅薄杞崲鎴愬叾浠栧浘鐗囨牸寮忥紝濡?jpg銆乬if 絳夈?/P>

榪欎釜欏圭洰鐨勭洰鏍囧氨鏄粰寮鍙戜漢鍛樹竴濂楃敤浜庡鐞嗘垨搴旂敤 SVG 瀵硅薄鐨勫熀紜鏍稿績妯″瀷銆備綔涓篈pache 欏圭洰鎴愬憳涔嬩竴錛岃欏圭洰涔熶負寮鍙戜漢鍛樻彁渚涗簡涓涓紑鍙戠殑鍙墿灞曠殑騫沖彴銆傚悓鏃?batik 涔熺淮鎶や簡涓涓彲浠ユ煡鐪?SVG 鏂囦歡鐨勬祻瑙堝櫒銆傝櫧鐒?batik 榪樻病鏈夊畬鍏ㄥ疄鐜?SVG 鐨勬墍鏈夋爣鍑嗚娉曞拰鏍囪錛屼絾閫氳繃姣旇緝涓嶅悓鐗堟湰鐨勫尯鍒氨浼氬彂鐜幫紝浠栨鍦ㄤ互寰堥珮鐨勬晥鐜囪鐩?SVG 鎵鏈夌殑鏍囧噯銆?/P>

2.1.2 璁╂垜浠疄鐜頒竴涓畝鍗曠殑 Batik 紼嬪簭

棣栧厛璁╂垜浠疄鐜頒竴涓畝鍗曠殑鍩轟簬 Batik 鐨?SVG 嫻忚鍣ㄣ侭atik 灝佽浜唎rg.apache.batik.swing.JSVGCanvas 瀵硅薄鍙互鐢ㄤ簬鍦?swing 涓祵鍏?SVG 鏄劇ず瀹瑰櫒錛屽茍鍙互閫氳繃 org.apache.batik.swing.JSVGCanvas 鎻愪緵鐨勬柟娉曞 SVG 鏂囨。鍜屽浘鍍忚繘琛屾搷浣溿傝繖涓祻瑙堝櫒鍙互鏀寔澶ч儴鍒?SVG 鐨勮娉曞拰鏍囧噯鍖呮嫭鑴氭湰浜や簰鐨勫姛鑳斤紝浣嗘殏鏃惰繕娌℃湁寮曞叆鍔ㄧ敾銆傚叧浜庡姩鐢誨拰鑴氭湰浜や簰鐨勫唴瀹規垜浠細鍦ㄤ互鍚庣殑鏂囩珷涓榪幫紝浠婂ぉ鍏堥泦涓В鍐沖嚑浣曞彉鎹㈢殑闂銆?/P>

鍥?7. 榪愯紼嬪簭鎵撳紑鎴戜滑緙栧啓鐨?SVG 鐨勪緥瀛?/B>
鍥?7. 榪愯紼嬪簭鎵撳紑鎴戜滑緙栧啓鐨?SVG 鐨勪緥瀛? src=

鍙互閫氳繃璇ラ〉闈㈠紩瀵艱繍琛岃紼嬪簭錛?
浠庨檮浠朵腑鍙互鏌ョ湅璇ョ▼搴忕殑瀹屾暣浠g爜錛屼篃鍙氳繃 緗戜笂涓嬭澆鍦板潃 榪愯璇ョ▼搴忋?

鍥?8. 灝嗕竴涓?SVGCanvas 娣誨姞鍒扮晫闈?/B>

private javax.swing.JPanel SVGPanel = new javax.swing.JPanel();
private JSVGCanvas svgCanvas = new org.apache.batik.swing.JSVGCanvas();
SVGPanel.add("Center", svgCanvas);

2.2 閫氳繃 Batik 鐨?GVT 妯″瀷瀹炵幇 SVG 鐨勫嚑浣曞彉鎹?/SPAN>
2.2.1 涓轟粈涔堣浣跨敤 Batik 鏉ュ疄鐜?SVG 鐨勫嚑浣曞彉鎹?/B>

褰撴垜浠敤 Batik 宸ュ叿闆嗕綔涓?SVG 瀹㈡埛绔殑瑙e喅鏂規鏃訛紝濡傜緝鏀懼鉤縐昏繖鏍風殑鎿嶄綔灝卞湪鎵闅懼厤浜嗐備絾 Batik 騫舵病鏈夌洿鎺ユ敮鎸佸 Adobe SVG Viewer 閭f牱鐨勯紶鏍囨嫋鍔ㄥ嚑浣曞彉鎹㈢殑鎿嶄綔錛岃繖灝辮姹傛垜浠榪欎簺鍔熻兘榪涜緙栫▼澶勭悊銆?/P>

鍦ㄥ垎鏋?SVG 鐨勫嚑浣曞彉鎹㈢殑緇嗚妭涔嬪墠錛屽厛璁╂垜浠簡瑙d竴涓嬪熀鏈殑鎿嶄綔緙栫▼鏂瑰紡銆?/P>

2.2.2 Batik 涓嬮氳繃 java.awt.geom.AffineTransform 鏉ュ疄鐜?SVG 鐨勫嚑浣曞彉鎹?/B>

JSVGCanvas 鎻愪緵鏂規硶鍙互鑾峰彇 java.awt.geom.AffineTransform 瀵硅薄銆侫ffineTransform 鏄敤浜庡疄鐜?D 鍑犱綍鍥懼艦鍧愭爣鍙樻崲澶勭悊鐨勫璞★紝鍙互閫氳繃璇ュ璞¤繘琛屼簩緇村嚑浣曠┖闂翠腑涓や釜鍧愭爣緋葷殑鐩鎬簰鏄犲皠鍜屽彉鎹€?/P>

騫崇Щ:



//鍚戝乏鍜屽悜涓嬪鉤縐?0涓儚绱?
java.awt.geom.AffineTransform  rat = svgCanvas.getRenderingTransform();
rat.translate(50,50);
svgCanvas.setRenderingTransform(rat);

緙╂斁:



//浠ュ睆騫曞乏涓婅鍘熺偣涓哄浐瀹氱偣榪涜緙╂斁鎿嶄綔
java.awt.geom.AffineTransform  rat = svgCanvas.getRenderingTransform();
rat.scale(0.5,0.5);
svgCanvas.setRenderingTransform(rat);

鏃嬭漿:



//浠ュ睆騫曞乏涓婅鍘熺偣涓哄浐瀹氱偣榪涜鏃嬭漿緙╂斁
java.awt.geom.AffineTransform  rat = svgCanvas.getRenderingTransform();
rat.rotate(3.1415926/4);
svgCanvas.setRenderingTransform(rat);

澶嶅悎鍙樻崲:



//涓涓患鍚堝鉤縐匯佹斁澶у拰鏃嬭漿90搴︾殑澶嶅悎鍙樻崲
java.awt.geom.AffineTransform  rat = svgCanvas.getRenderingTransform();
rat.translate(50錛?0);
rat.scale(2錛?);
rat.rotate(3.1415926/4);
svgCanvas.setRenderingTransform(rat);

3. 褰撴垜浠渶瑕佽繘琛屽鍚堝嚑浣曞彉鎹㈢殑鏃跺?/SPAN>

3.1 鍏堟潵璁╂垜浠氳繃涓嶅悓鐨勫彉鎹唬鐮佺粍鍚堝疄鐜板鍚堝嚑浣曞彉鎹?/SPAN>
鍏堣鎴戜滑鐪嬬涓涓緥瀛?

//鏀懼ぇ涓鍊嶅拰騫崇Щ50涓儚绱犵殑澶嶅悎鍙樻崲

AffineTransform rat = svgCanvas.getRenderingTransform();

        rat.scale(2,2);
rat.translate(50,50);
svgCanvas.setRenderingTransform(rat);

      

鍥?9. 澶嶅悎鍙樻崲涓
鍥?9. 澶嶅悎鍙樻崲涓

鍙互鐪嬪緱鍑烘潵錛岃繖涓彉鎹㈢殑鏈緇堟晥鏋滄槸錛氬浘褰㈢殑褰㈢姸鏀懼ぇ涓鍊嶏紝鍘熷浘褰㈢殑錛?錛?錛夊師鐐瑰潗鏍囧鉤縐?00涓儚绱犮?/P>

鍐嶆潵鐪嬬浜屼釜渚嬪瓙:



//鏀懼ぇ涓鍊嶅拰騫崇Щ50涓儚绱犵殑澶嶅悎鍙樻崲
AffineTransform rat = svgCanvas.getRenderingTransform();

        rat.translate(50,50);
rat.scale(2,2);
svgCanvas.setRenderingTransform(rat);

      

鍥?10. 澶嶅悎鍙樻崲浜?/B>
鍥?10. 澶嶅悎鍙樻崲浜? src=

榪欎釜鍙樻崲鐨勬渶緇堟晥鏋滄槸錛氬浘褰㈢殑褰㈢姸鏀懼ぇ涓鍊嶏紝鍘熷浘褰㈢殑錛?錛?錛夊師鐐瑰潗鏍囧鉤縐?0涓儚绱犮?/P>

3.2 鍏抽敭鏄『搴?/SPAN>
姣旇緝涓涓嬭繖涓ょ騫崇Щ鍚庣殑鏁堟灉浼氬彂鐜?鍙槸鍥犱負緙╂斁鍜屽鉤縐葷殑欏哄簭涓嶅悓錛屽彉鎹㈠悗鐨勭粨鏋滃氨鍙戠敓浜嗗尯鍒傜涓涓緥瀛愬疄闄呭鉤縐葷殑涓嶆槸50涓儚绱?鑰屾槸100涓儚绱犮傝岀浜屼釜渚嬪瓙鍒欐槸騫崇Щ浜?0涓儚绱犮?/P>

鏈夊叴瓚g殑璇昏呭彲浠ユ坊鍔犲叾浠栧嚑浣曞彉鎹㈡柟寮忥紝騫舵祴璇曚笉鍚岀殑鍙樻崲欏哄簭錛屼細鍙戠幇澶嶅悎鍙樻崲鐨勯『搴忎笌澶嶅悎鍙樻崲鐨勬渶緇堟晥鏋滄槸绱у瘑鐩稿叧鐨勩傞偅涔堝浣曞垎鏋愬拰璁$畻澶嶅悎鍙樻崲鐨勫彉鎹㈢粨鏋滃憿錛熻繖閲屾垜浠渶瑕佽ˉ鍏呬竴鐐規暟瀛︾煡璇嗕簡銆?/P>

3.3 瀵瑰崟涓鐨勫嚑浣曞彉鎹㈣繘琛屾暟瀛︽ā鍨嬪垎鏋?/SPAN>
瀵硅綆楁満鍥懼艦瀛︿腑鍥懼艦鍙樻崲鐩稿叧鐞嗚寰堢啛鎮夌殑浜哄彲浠ヨ煩榪囪繖閮ㄥ垎鐩存帴鐪?Batik 鐨勫疄鐜版柟寮忋傝繖鑺備嬌鐢ㄧ殑榻愭寮忓浘鐗囧紩鐢ㄨ嚜 SVG鏍囧噯涓叧浜庡潗鏍囧彉鎹㈢殑榻愭寮忕殑渚嬪瓙鎻掑浘銆?

棣栧厛鎴戜滑鏉ヤ簡瑙d竴涓嬪浘褰㈠彉鎹㈢殑榻愭寮忚綆楁柟娉曪細

鍥?11. 鍩烘湰鍑犱綍 鍙樻崲榻愭寮?/B>
鍥?11. 鍩烘湰鍑犱綍 鍙樻崲榻愭寮? src=

榪欐槸涓涓熀鏈浘褰㈠彉鎹㈤綈嬈″紡銆傜瓑寮忕殑鏈鍙寵竟鏄竴涓潗鏍囩偣鏈彉鎹㈠墠鐨勫潗鏍囩煩闃碉紝鏈宸﹁竟鏄鍧愭爣鐐瑰彉鎹㈠悗鎵鍦ㄤ綅緗殑涓涓笁琛屼竴鍒楃殑鍧愭爣鐭╅樀錛屼腑闂撮偅涓笁琛屼笁鍒楃殑鐭╅樀灝辨槸鍙樻崲鐭╅樀銆備笉鍚岀殑鍙樻崲鏂瑰紡灝嗗搴斾笉鍚岀殑鍙樻崲鐭╅樀錛屽浘褰㈠鉤縐繪晥鏋滃氨鏄氳繃榪欐牱涓涓彉鎹㈤綈嬈″紡鏉ュ疄鐜扮殑銆?/P>

騫崇Щ:濡傛灉闇瑕佸皢鍥懼艦騫崇Щ錛坱x錛宼y錛変釜鍧愭爣鏃訛紝閲囩敤濡備笅鐨勫彉鎹㈢煩闃靛甫鍏ュ彉鎹㈡柟紼嬨?/P>

鍥?12. 騫崇Щ鍙樻崲鐭╅樀
鍥?12. 騫崇Щ鍙樻崲鐭╅樀

緙╂斁錛氬鏋滈渶瑕佸湪 x 杞存柟鍚戝疄鐜?sx 鍊嶇緝鏀撅紝鍦?y 杞存柟鍚戝疄鐜?sy 杞寸緝鏀炬椂錛岄噰鐢ㄥ涓嬬殑鍙樻崲鐭╅樀甯﹀叆鍙樻崲鏂圭▼銆?/P>

鍥?13. 緙╂斁鍙樻崲鐭╅樀
鍥?13. 緙╂斁鍙樻崲鐭╅樀

鏃嬭漿:濡傛灉闇瑕佸皢鍥懼儚鏃嬭漿 a 搴︽椂錛屼嬌鐢ㄥ涓嬬殑鍙樻崲鐭╅樀甯﹀叆鍙樻崲鏂圭▼銆?/P>

鍥?14. 鏃嬭漿鍙樻崲鐭╅樀
鍥?14. 鏃嬭漿鍙樻崲鐭╅樀

3.4 閲囩敤澶嶅悎鍑犱綍鍙樻崲鐨勬暟瀛︽ā鍨嬪垎鏋?/SPAN>
3.4.1 鏁板鍒嗘瀽

褰撲袱緇勫彉鎹㈠悓鏃朵綔鐢ㄤ簬鍚屼竴涓浘鍍忔椂錛岃繛緇嬌鐢ㄨ絳夊紡錛屽緱鍑哄涓嬬瓑寮忋傜敱浜庡仛鍙樻崲鐨勬椂鍊欐槸灝嗗彉鎹㈢煩闃墊斁鍦ㄧ煩闃電Н鐨勫乏杈癸紝鎵浠ュ浜庡鍚堝彉鎹㈢殑寮忓瓙錛屽簲璇ヤ粠鍙沖悜宸﹁繘琛岃銆傚浜庡涓嬬殑寮忓瓙錛氫粠鍙寵嚦宸︿緷嬈℃槸鍙樻崲鍓嶇殑鍧愭爣錛岀涓嬈¤漿鎹㈢殑杞崲鐭╅樀錛岀浜屾杞崲鐨勮漿鎹㈢煩闃碉紝杞崲鍚庣殑鍧愭爣鍊箋?/P>

鍥?15. 榪涜涓ゆ鍙樻崲鐨勫鍚堢煩闃?/B>
鍥?15. 榪涜涓ゆ鍙樻崲鐨勫鍚堢煩闃? src=

榪涗竴姝ユ帹瀵?n 嬈″嚑浣曞彉鎹㈢殑澶嶅悎鍙樻崲絳夊紡錛?/P>

鍥?16. n嬈″彉鎹㈢殑澶嶅悎鐭╅樀
鍥?16. n嬈″彉鎹㈢殑澶嶅悎鐭╅樀

3.4.2 鏉ュ疄璺典竴涓?/B>

鍥?17. 鍙樻崲鍓嶆晥鏋?/B>
鍥?17. 鍙樻崲鍓嶆晥鏋? src=

浣跨敤榪欐牱涓涓鍚堝彉鎹㈡柟寮忥細

<g transform="translate(50,90) rotate(-45) translate(130,160)">

鏍規嵁鍓嶉潰鐨勫垎鏋愮粨鏋滃甫鍏ュ彉鎹㈡柟紼嬶紝寰楀嚭濡備笅絳夊紡

鍥?18. 鎺ㄥ鐭╅樀
鍥?18. 鎺ㄥ鐭╅樀

鏍規嵁璁$畻鍚庣殑鍙樻崲鐭╅樀錛屽彲寰楀彉鎹㈢粨鏋滄槸鍥懼艦鏁翠綋騫崇Щ鍒幫紙255.03,111.21錛夛紝鍚屾椂鍥懼艦鑷韓娌塊『鏃墮拡鏂瑰悜鏃嬭漿45搴︺傛煡鐪嬪疄闄呭彉鎹㈢粨鏋滐紝榪欓噷鎴戜滑鍙互鍙戠幇錛屽浜?SVG 鐨勫彉鎹㈡潵璇達紝铏界劧鎴戜滑涔犳儻涓婁粠宸﹀線鍙沖啓鍙樻崲鍙傛暟鐨勶紝瀹為檯涓婂浘褰㈠仛鍙樻崲鐨勬椂鍊欐槸浠庡彸杈圭殑鍙樻崲鍙傛暟寮濮嬩緷嬈¤繘琛屽浘褰㈠彉鎹㈢殑銆?/P>

鍥?19. 鍙樻崲鍚庢晥鏋?/B>
鍥?19. 鍙樻崲鍚庢晥鏋? src=

3.5 鍒嗘瀽涓涓?Batik 鏄浣曞疄鐜?SVG 鐨勫鍚堝嚑浣曞彉鎹㈢殑
3.5.1 鍏堢湅絎竴涓緥瀛愶細

榪欎釜鍙樻崲鏄厛鏀懼ぇ鍚庡鉤縐葷殑鍙樻崲錛屽叾鍙樻崲鏁堟灉鏈緇堟槸錛屽厛灝嗗浘褰㈢殑褰㈢姸鏀懼ぇ涓鍊嶏紝鐒跺悗灝嗗浘褰㈡暣涓鉤縐?00涓儚绱犮傝繖閲屾垜浠彲浠ョ湅鍑猴紝铏界劧鎴戜滑鏄厛榪涜鐨勬斁澶у彉鎹紝鍚庤繘琛岀殑騫崇Щ鎿嶄綔錛屼絾褰撴垜浠繘琛屽鍚堝彉鎹㈢殑鏃跺欑敱浜庡疄闄呰繍綆楁椂涓婃槸鍏堣繘琛屼簡騫崇Щ錛屽悗榪涜浜嗙緝鏀俱傛垨鑰呯畝鍗曠殑鐞嗚В涓轟粠宸﹀悜鍙沖厛鍐欑緝鏀劇煩闃碉紝鍐嶅啓騫崇Щ鐭╅樀錛岃繖鏍峰緱鍑虹殑鍙樻崲鐭╅樀灝卞彲浠ュ鍙樻崲鍚庣殑鏁堟灉榪涜璁$畻浜嗐?/P>

//鏀懼ぇ涓鍊嶅拰騫崇Щ50涓儚绱犵殑澶嶅悎鍙樻崲
//<g transform=" scale(2 ) translate(50 50)">
AffineTransform rat = svgCanvas.getRenderingTransform();

        rat.scale(2,2);
rat.translate(50,50);
svgCanvas.setRenderingTransform(rat);

      

鎴戜滑鍙互灝嗚繖涓彉鎹㈠搴旂殑璁$畻鐭╅樀鍐欏嚭鏉ワ細

鍥?20. 澶嶅悎鍙樻崲渚嬩竴鐨勫彉鎹㈢煩闃?/B>
鍥?20. 澶嶅悎鍙樻崲渚嬩竴鐨勫彉鎹㈢煩闃? src=

鏍規嵁涓婇潰鐨勫垎鏋愭垜浠彲浠ョ湅鐨勫嚭錛屽厛榪涜緙╂斁鍙樻崲鍦ㄨ繘琛屽鉤縐誨彉鎹㈢殑澶嶅悎鍙樻崲鏃訛紝鍙樻崲鍚庡師鍥懼厓鐨勫潗鏍囦細鏄犲皠鍒版柊鐨勪綅緗紝鍏朵腑錛?/P>

X1=Sx(X+dx)
Y1=Sy(Y+dy)

3.5.2 鍐嶆潵鐪嬬浜屼釜渚嬪瓙錛?/B>

榪欎釜鍙樻崲鏄厛鏀懼ぇ鍚庡鉤縐葷殑鍙樻崲錛屽叾鍙樻崲鏁堟灉鏈緇堟槸錛屽厛灝嗗浘褰㈡暣涓鉤縐?0涓儚绱狅紝鐒跺悗灝嗗浘褰㈢殑褰㈢姸鏀懼ぇ涓鍊嶃?/P>

//鏀懼ぇ涓鍊嶅拰騫崇Щ50涓儚绱犵殑澶嶅悎鍙樻崲
//<g transform="translate(50錛?0) scale(2 )">
AffineTransform rat = svgCanvas.getRenderingTransform();

        rat.translate(50,50);
rat.scale(2,2);
svgCanvas.setRenderingTransform(rat);

      

鎴戜滑鍙互灝嗚繖涓彉鎹㈠搴旂殑 svg 鏂囨。瀹炵幇鍐欏嚭鏉ワ細

<g transform="translate(50 50) scale(2 )">

鍥?21. 澶嶅悎鍙樻崲渚嬩簩鐨勫彉鎹㈢煩闃?/B>
鍥?21. 澶嶅悎鍙樻崲渚嬩簩鐨勫彉鎹㈢煩闃? src=

鏍規嵁涓婇潰鐨勫垎鏋愭垜浠彲浠ョ湅鐨勫嚭錛屽厛榪涜騫崇Щ鍙樻崲鍐嶈繘琛岀緝鏀懼彉鎹㈢殑澶嶅悎鍙樻崲鏃訛紝鍙樻崲鍚庡師鍥懼厓鐨勫潗鏍囦細鏄犲皠鍒版柊鐨勪綅緗紝鍏朵腑錛?/P>

X1=Sx*X+dx
Y1=Sy*Y+dy

3.5.3 瀹炵敤榪欎袱涓緥瀛愮殑鎴愭灉

鍋囪鎴戜滑闇瑕佸皢鍥懼艦鍘熺偣鐨勪綅緗Щ鍔ㄥ埌錛?50錛?00錛夛紝鍚屾椂褰㈢姸鏀懼ぇ鍒板師鏉ョ殑3鍊嶏紝璇ュ浣曡繘琛屽彉鎹㈡潵瀹炵幇榪欐牱鐨勬晥鏋滃憿錛?/P>

鍥?22. 鍙樻崲鏁堟灉
鍥?22. 鍙樻崲鏁堟灉

浣跨敤絎竴涓緥瀛愮殑鍒嗘瀽緇撴灉錛屽厛榪涜緙╂斁鍙樻崲錛屽啀榪涜騫崇Щ鍙樻崲鐨勬柟紼嬪彉鎹細

鍥?23. 鏂圭▼鎺ㄦ紨
鍥?23. 鏂圭▼鎺ㄦ紨

鏍規嵁鎺ㄥ鍙煡闇鍏堣繘琛?鍊嶇殑緙╂斁鍙樻崲錛屽啀騫崇Щ錛?0錛?00錛変釜鍧愭爣灝卞彲浠ュ疄鐜版寚瀹氱殑鍙樻崲鏁堟灉銆傚疄鐜扮▼搴忓涓?/P>

//<g transform=" scale(3 ) translate(50錛?00)">
AffineTransform rat = svgCanvas.getRenderingTransform();

        rat.scale(3,3);
rat.translate(50,100);
svgCanvas.setRenderingTransform(rat);

      

鑻ュ厛榪涜騫崇Щ鍙樻崲錛屽啀榪涜緙╂斁鍙樻崲鐨勮瘽錛屾牴鎹浜屼釜渚嬪瓙鐨勬帹瀵肩粨鏋滐細

鍥?24. 鏂圭▼鎺ㄦ紨
鍥?24. 鏂圭▼鎺ㄦ紨

鍙煡搴斿厛榪涜錛?50錛?00錛夌殑騫崇Щ鎿嶄綔錛屽啀瀹炵幇3鍊嶇殑緙╂斁鎿嶄綔銆傚疄鐜扮▼搴忓涓嬶細



//<g transform=" translate(150錛?00) scale(3 )">
AffineTransform rat = svgCanvas.getRenderingTransform();

        rat.translate(150,300);
rat.scale(3,3);
svgCanvas.setRenderingTransform(rat);

      

4. 涓涓父鐢ㄥ鍚堝彉鎹㈠疄渚嬬殑瀹炵幇--瀹氱偣鍙樻崲
涓婅竟鎴戜滑鍒嗘瀽浜?Batik 瀹炵幇 SVG 鍥懼艦鍙樻崲鐨勫師鐞嗗拰璁$畻鏂規硶銆備笅闈㈡垜浠敤鍒嗘瀽鐨勭粨鏋滃疄鐜頒竴涓父鐢ㄧ殑鍙樻崲瀹炰緥錛氬畾鐐瑰彉鎹€傚彉鎹㈢殑縐嶇被鍖呮嫭緙╂斁錛屾棆杞紙涓鑸笉鑰冭檻瀹氱偣騫崇Щ榪欎釜姒傚康錛夈?/P>

鎵璋撳畾鐐瑰彉鎹㈠氨鏄湪鍥懼艦鍙樻崲涓寚瀹氫竴涓浐瀹氱殑鐐癸紝鍦ㄥ彉鎹㈢粨鏉熷悗錛岃鐐圭殑浣嶇疆涓嶅彂鐢熷彉鍖栥傚畾鐐瑰彉鎹㈠湪 GIS 鐨勫疄闄呰繍鐢ㄤ腑寰堝父瑙侊紝姣斿灝嗗湴鍥炬斁澶у埌鎸囧畾鍊嶆暟鑰屼繚鎸佸湴鍥劇殑鏌愪釜浣嶇疆錛堝錛氶紶鏍囩偣鍑葷殑浣嶇疆錛変笉鍙戠敓鍙樺寲銆傛垜浠互瀹氱偣緙╂斁涓轟緥鎻忚堪瀹氱偣鍙樻崲鐨勪嬌鐢ㄦ柟娉曘?/P>

鍋囪鎴戜滑鐢?x1,y1)鐐規潵鍋氬畾鐐瑰彉鎹㈢殑鍩哄噯鐐硅繘琛屽嚑浣曞彉鎹紝瑕佹眰瀹炵幇鍙樻崲鍚庯紙x1,y1錛夌殑浣嶇疆涓嶅彉銆?/P>

瀹氱偣鍙樻崲鐨勫熀鏈濇兂鏄熀浜庤繖鏍蜂竴涓壒鎬э細褰撳浘鍍忚繘琛岀緝鏀撅紝鎴栨棆杞彉鎹㈢殑鏃跺欙紝鍧愭爣鍘熺偣鐨勪綅緗茍涓嶅彂鐢熷彉鍖栥傚畾鐐瑰彉鎹㈢殑瀹炵幇鏂規硶灝辨槸錛屽厛灝嗗熀鍑嗙偣錛坸1,y1錛夊鉤縐誨埌鍘熺偣鍗沖仛涓嬈-x1,-y1]鍙樻崲錛岃繘琛屽彉鎹㈠悗鍐嶅皢鍙樻崲鍚庣殑鍘熺偣騫崇Щ鍒幫紙x1,y1錛夊嵆鍐嶈繘琛屼竴嬈x1,y1]鍙樻崲銆?/P>

鍥?25. 鍩轟簬錛坸1,y1錛夊畾鐐瑰彉鎹?/B>
鍥?25. 鍩轟簬錛坸1,y1錛夊畾鐐瑰彉鎹? src=

瀹為檯緙栫▼鐨勬椂鍊欙紝鎴戜滑鏃犻渶瀵瑰畾鐐瑰彉鎹㈠仛濡傛澶嶆潅鐨勮繍綆椼備緥濡傚彲浠ラ噰鐢ㄥ涓嬬殑鏂瑰紡瀹炵幇閽堝錛?0,50錛夌殑瀹氱偣鍙樻崲錛?/P>

//浠ワ紙50錛?0錛夌偣涓哄熀鍑嗙偣榪涜鍑犱綍鍙樻崲
//<g transform="translate(50錛?0) 鈥︹︹︹︹?translate(-50錛?50)">
AffineTransform rat = svgCanvas.getRenderingTransform();

        rat.translate(50錛?0);
//鍏朵粬鍙樻崲鏂瑰紡
鈥︹︹︹︹︹?
鈥︹︹︹︹︹?
鈥︹︹︹︹︹?
rat.translate(-50,-50);
svgCanvas.setRenderingTransform(rat);

      

鍙傝冭祫鏂?



]]> 主站蜘蛛池模板: 在线免费观看一级毛片| 国产亚洲精aa成人网站| 一级毛片人与动免费观看| 亚洲成av人片不卡无码| 亚洲国产专区一区| 免费看黄视频网站| 国产成人一区二区三区视频免费 | 99国产精品永久免费视频 | 久久精品国产亚洲av成人| 吃奶摸下高潮60分钟免费视频| 久99久精品免费视频热77| 一级毛片a免费播放王色| 皇色在线免费视频| 亚洲成a∨人片在无码2023| 亚洲激情黄色小说| 亚洲AV无码专区电影在线观看| 亚洲成AV人片在线观看无码 | 91香焦国产线观看看免费| 亚洲视频在线免费| 色婷婷亚洲一区二区三区| 91午夜精品亚洲一区二区三区| 国产亚洲真人做受在线观看| 亚洲日韩精品无码专区网站| 国产在线观看免费完整版中文版| 久久精品免费全国观看国产| 久久久久久久久免费看无码| 日韩视频在线精品视频免费观看| 成人免费在线视频| 曰批视频免费30分钟成人| 毛片a级毛片免费观看品善网| 国产精品久久香蕉免费播放| 精品亚洲视频在线观看| 亚洲av无码无在线观看红杏| 亚洲人成网站在线观看播放动漫 | 久久久久亚洲av无码尤物| 国产精品亚洲mnbav网站 | 永久免费毛片手机版在线看| 夭天干天天做天天免费看| 亚洲毛片不卡av在线播放一区| 亚洲AV日韩AV鸥美在线观看| 亚洲中文字幕无码久久2020|