精华内容
下载资源
问答
  • 通过以上代码实现图片的切换和放大镜的效果 本代码是针对京东商城的手机详情页做的 通过移动手机的小图片可以切换不同的大图片 同时鼠标放在大图片上时可以实现放大效果 分享给初学者!
  • 无论是在手机端编写短信,还是使用印象笔记写笔记的时候,我们想要修改已经写好的内容时,总需要长按光标位置,然后变成一个放大镜,然后将光标移动到想要修改的位置,进行修改。但是这样操作过于麻烦,存在一些...

    无论是在手机端编写短信,还是使用印象笔记写笔记的时候,当我们想要修改已经写好的内容时,总需要长按光标位置,然后变成一个放大镜,然后将光标移动到想要修改的位置,进行修改。但是这样操作过于麻烦,存在一些弊端,例如:

    • 长按后,容易进入选择状态

    • 需要一直按住并同时移动光标

    • 定位不够准确

    今天我介绍给大家的小技巧就是如何在iPhone输入文字时快速移动和定位光标!

    继续阅读>>

    转载于:https://my.oschina.net/xyting/blog/597281

    展开全文
  • 要扫的二维码处于扫描框中时,获取该二维码在扫描框中的宽度,与扫描框的宽度进行对比,小于扫描框宽度的1/4,则认为二维码在扫描框中较小(镜头较远),则需要放大摄像头焦距,而不需要移动手机来调整。...

    思路:

    1. 当要扫的二维码处于扫描框中时,获取该二维码在扫描框中的宽度,与扫描框的宽度进行对比,小于扫描框宽度的1/4,则认为二维码在扫描框中较小(镜头较远),则需要放大摄像头焦距,而不需要移动手机来调整。
    2. 放大焦距。

    解码流程

    1. 将图像进行二值化处理,1、0代表黑、白。
    2. 寻找定位符、校正符,然后将原图像中符号码部分取出。(detector代码实现的功能)。
    3. 对符号码矩阵按照编码规范进行解码,得到实际信息(decoder代码实现的功能)。

    首先

    扫描框的尺寸,在CamerManager中getFramingRect()方法是获取扫描框的矩形尺寸,frameRect.right-frameRect.left来获取扫描框宽度。

    Rect frameRect = activity.cameraManager.getFramingRect();
    if(frameRect!=null){
      int frameWidth = frameRect.right-frameRect.left;
    }
    

    其次

    DecodeHandler文件中,decode(byte[] data, int width, int height),是对扫描结果的解析处理。先看一下源码:

    /**
     * Decode the data within the viewfinder rectangle, and time how long it took. For efficiency,
     * reuse the same reader objects from one decode to the next.
     *
     * @param data   The YUV preview frame.
     * @param width  The width of the preview frame.
     * @param height The height of the preview frame.
     */
    private void decode(byte[] data, int width, int height) {
      long start = System.currentTimeMillis();
      Result rawResult = null;
      PlanarYUVLuminanceSource source = activity.getCameraManager().buildLuminanceSource(data, width, height);
      if (source != null) {
        BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
        try {
          rawResult = multiFormatReader.decodeWithState(bitmap);
        } catch (ReaderException re) {
          // continue
        } finally {
          multiFormatReader.reset();
        }
      }
    
      Handler handler = activity.getHandler();
      if (rawResult != null) {
        // Don't log the barcode contents for security.
        long end = System.currentTimeMillis();
        Log.d(TAG, "Found barcode in " + (end - start) + " ms");
        if (handler != null) {
          Message message = Message.obtain(handler, Ids.decode_succeeded, rawResult);
                  Bundle bundle = new Bundle();
                  bundleThumbnail(source, bundle);
                  message.setData(bundle);
                  message.sendToTarget();
        }
      } else {
        if (handler != null) {
          Message message = Message.obtain(handler, Ids.decode_failed);
          message.sendToTarget();
        }
      }
    }
    

    说明:
    Result 就是结果,我们需要从中获取一些信息。要获取二维码的尺寸,只需要获取两个定位的点就行了,这个通过Result的getResultPoints()来获取,得到的是一个ResultPoint数组,通过调试,结合安卓中的坐标系得知的结果是resultPoints[0],resultPoints[1]分别对应的是下图中的左下角–左上角的点,有这两个点就足够了,然后通过两点间的距离公式来获得大致尺寸。
    在这里插入图片描述

    下面是我提取出来相关的主要文件,一步一步涉及到的文件过程如下

    DecodeHandler–>
    –>MultiFormatReader multiFormatReader = new MultiFormatReader(); MultiFormatReader–>
    setHints(){
    //二维码
    if (formats.contains(BarcodeFormat.QR_CODE)) {
    readers.add(new QRCodeReader());
    }
    } QRCodeReader–>Result decode(BinaryBitmap image, Map<DecodeHintType,?> hints){

    }

    我们先添加一个QRCodeReader的构造方法,因为摄像头的相关配置以及扫描框相关信息在CaptureActivity中,所以把CaptureActivity放到QRCodeReader的构造方法中去。

    private CaptureActivity activity;
    
      public QRCodeReader(CaptureActivity activity) {
        this.activity = activity;
      }
    

    接着是MultiFormatReader

    private CaptureActivity activity;
    public void setActivity(CaptureActivity activity) {
        this.activity = activity;
      }
      //这个方法中有关QRCodeReader的调用改成调用有参的构造方法
     setHints(Map<DecodeHintType,?> hints){
         if (formats.contains(BarcodeFormat.QR_CODE)) {
                readers.add(new QRCodeReader(activity));
         }
         //..... 接着是
         if (readers.isEmpty()){
             readers.add(new QRCodeReader(activity));
         }
    }
    

    然后在DecodeHandler的构造方法中对MultiFormatReader的调用setHints之前先调用setActivity()保证CaptureActivity不为空

    DecodeHandler(CaptureActivity activity, Map<DecodeHintType, Object> hints) {
            multiFormatReader = new MultiFormatReader();
            multiFormatReader.setActivity(activity);
            multiFormatReader.setHints(hints);
            this.activity = activity;
        }
    

    接下来看QRCodeReader中的这个方法,我又加了三个关键注释

    @Override
      public final Result decode(BinaryBitmap image, Map<DecodeHintType,?> hints)
          throws NotFoundException, ChecksumException, FormatException {
        DecoderResult decoderResult;
        ResultPoint[] points;
        if (hints != null && hints.containsKey(DecodeHintType.PURE_BARCODE)) {
          BitMatrix bits = extractPureBits(image.getBlackMatrix());
          decoderResult = decoder.decode(bits, hints);
          points = NO_POINTS;
        } else {
        //1、将图像进行二值化处理,1、0代表黑、白。( 二维码的使用getBlackMatrix方法 )
          //2、寻找定位符、校正符,然后将原图像中符号码部分取出。(detector代码实现的功能)
          DetectorResult detectorResult = new Detector(image.getBlackMatrix()).detect(hints);
          //3、对符号码矩阵按照编码规范进行解码,得到实际信息(decoder代码实现的功能)
          decoderResult = decoder.decode(detectorResult.getBits(), hints);
          points = detectorResult.getPoints();
        }
    
        // If the code was mirrored: swap the bottom-left and the top-right points.
        if (decoderResult.getOther() instanceof QRCodeDecoderMetaData) {
          ((QRCodeDecoderMetaData) decoderResult.getOther()).applyMirroredCorrection(points);
        }
    
        Result result = new Result(decoderResult.getText(), decoderResult.getRawBytes(), points, BarcodeFormat.QR_CODE);
        List<byte[]> byteSegments = decoderResult.getByteSegments();
        if (byteSegments != null) {
          result.putMetadata(ResultMetadataType.BYTE_SEGMENTS, byteSegments);
        }
        String ecLevel = decoderResult.getECLevel();
        if (ecLevel != null) {
          result.putMetadata(ResultMetadataType.ERROR_CORRECTION_LEVEL, ecLevel);
        }
        if (decoderResult.hasStructuredAppend()) {
          result.putMetadata(ResultMetadataType.STRUCTURED_APPEND_SEQUENCE,
                             decoderResult.getStructuredAppendSequenceNumber());
          result.putMetadata(ResultMetadataType.STRUCTURED_APPEND_PARITY,
                             decoderResult.getStructuredAppendParity());
        }
        return result;
      }
    

    通过DetectorResult ,我们可以获取二维码的定位符,所以在执行解码前利用定位符来获取在扫描框中的二维码大小,和扫描框进行大小对比来判断是否需要获取放大摄像头。处理结果如下:

    @Override
      public final Result decode(BinaryBitmap image, Map<DecodeHintType,?> hints)
          throws NotFoundException, ChecksumException, FormatException {
        DecoderResult decoderResult;
        ResultPoint[] points;
        if (hints != null && hints.containsKey(DecodeHintType.PURE_BARCODE)) {
          BitMatrix bits = extractPureBits(image.getBlackMatrix());
          decoderResult = decoder.decode(bits, hints);
          points = NO_POINTS;
        } else {
          //1、将图像进行二值化处理,1、0代表黑、白。( 二维码的使用getBlackMatrix方法 )
          //2、寻找定位符、校正符,然后将原图像中符号码部分取出。(detector代码实现的功能)
          DetectorResult detectorResult = new Detector(image.getBlackMatrix()).detect(hints);
          if(activity!=null){
            CameraManager cameraManager = activity.cameraManager;
            ResultPoint[] p = detectorResult.getPoints();
            //计算扫描框中的二维码的宽度,两点间距离公式
            float point1X = p[0].getX();
            float point1Y = p[0].getY();
            float point2X = p[1].getX();
            float point2Y = p[1].getY();
            int len =(int) Math.sqrt(Math.abs(point1X-point2X)*Math.abs(point1X-point2X)+Math.abs(point1Y-point2Y)*Math.abs(point1Y-point2Y));
            Rect frameRect = cameraManager.getFramingRect();
            if(frameRect!=null){
              int frameWidth = frameRect.right-frameRect.left;
              Camera camera = cameraManager.getOpenCamera().getCamera();
              Camera.Parameters parameters = camera.getParameters();
              int maxZoom = parameters.getMaxZoom();
              int zoom = parameters.getZoom();
              if(parameters.isZoomSupported()){
                if(len <= frameWidth/4) {//二维码在扫描框中的宽度小于扫描框的1/4,放大镜头
                  if (zoom == 0) {
                    zoom = maxZoom / 2;
                  } else if (zoom <= maxZoom - 10) {
                    zoom = zoom + 10;
                  } else {
                    zoom = maxZoom;
                  }
                  parameters.setZoom(zoom);
                  camera.setParameters(parameters);
                  return null;
                }
              }
            }
          }
          //3、对符号码矩阵按照编码规范进行解码,得到实际信息(decoder代码实现的功能)
          decoderResult = decoder.decode(detectorResult.getBits(), hints);
          points = detectorResult.getPoints();
        }
    
        // If the code was mirrored: swap the bottom-left and the top-right points.
        if (decoderResult.getOther() instanceof QRCodeDecoderMetaData) {
          ((QRCodeDecoderMetaData) decoderResult.getOther()).applyMirroredCorrection(points);
        }
    
        Result result = new Result(decoderResult.getText(), decoderResult.getRawBytes(), points, BarcodeFormat.QR_CODE);
        List<byte[]> byteSegments = decoderResult.getByteSegments();
        if (byteSegments != null) {
          result.putMetadata(ResultMetadataType.BYTE_SEGMENTS, byteSegments);
        }
        String ecLevel = decoderResult.getECLevel();
        if (ecLevel != null) {
          result.putMetadata(ResultMetadataType.ERROR_CORRECTION_LEVEL, ecLevel);
        }
        if (decoderResult.hasStructuredAppend()) {
          result.putMetadata(ResultMetadataType.STRUCTURED_APPEND_SEQUENCE,
                             decoderResult.getStructuredAppendSequenceNumber());
          result.putMetadata(ResultMetadataType.STRUCTURED_APPEND_PARITY,
                             decoderResult.getStructuredAppendParity());
        }
        return result;
      }
    

    放大摄像头,调整焦距

    Camera的当前设置信息在Parameters可以获取,通过getParameters()获取Parameters。
    放大摄像头有个前提条件就是你的手机要支持摄像头焦距的放大和缩小,不过目前大多数手机都支持了,我们还是判断一下为好。parameters.isZoomSupported(),判断是否支持焦距缩放。支持,然后设置需要放大多少,通过parameters.setZoom(int value)来设置,这个值有个限制, The valid range is 0 to {@link #getMaxZoom}.
    也就是最大能设置到maxzoom,这个最大值通过getMaxZoom()来获取。设置完成后,然后再调用camera.setParameters(parameters);让设置生效。另外,我加了一个判断,当扫描的是二维码才进行焦距的缩放rawResult.getBarcodeFormat() == BarcodeFormat.QR_CODE
    不需要的可以不用加。

    展开全文
  • 你,准备好参加今夏的朋友圈摄影大赛了吗? 现在的天气有多热,谁出门谁知道!出去玩还要背一台单反,绝对可以说是一种折磨了。但是,如果你拥有一台大光圈的手机,...而环境光线变弱的时候,瞳孔就会放大。而手...

    你,准备好参加今夏的朋友圈摄影大赛了吗?

    现在的天气有多热,谁出门谁知道!出去玩还要背一台单反,绝对可以说是一种折磨了。但是,如果你拥有一台大光圈的手机,一样可以在朋友圈脱颖而出。

    那么,大光圈究竟对手机拍照有什么作用呢?

    光圈是什么?

    简单来说,光圈就是一个用来控制手机镜头进光量的装置。光圈和我们的瞳孔非常类似,当环境光线强的时候,我们的瞳孔会收缩变小;而当环境光线变弱的时候,瞳孔就会放大。而手机的光圈也是如此,光线不足的环境中,我们会需要大光圈来满足拍摄需求。

    光圈是如何影响手机成像的?

    通常情况下,光圈对手机拍照的影响有两方面,进光量和景深。

    进光量

    从以前的F/2.2光圈,到后来常见的F/1.8大光圈,再到现在的F/1.7超大光圈,手机厂商一次次地在光圈上做尝试和突破,以带来更好的拍照体验。F后面的数字越大,则光圈越小;反之数字越小,则光圈越大。而光圈越大,就意味着进光量越大,拥有更好的成像质量。所以F后面的数值越小,成像质量越高。根本上,光圈就是为了控制进光量

    在一台单反上,我们拍照的时候一般会调节三个参数:快门、光圈和感光度(ISO)。快门决定进光的时间,光圈决定单位时间进光的多少,感光度则是感光元件的灵敏度。

    为了要保证一张照片拥有足够的进光量,光圈越大,快门就可以更快;反之,光圈越小,快门就越慢,从而来保证进光量充足。同时我们必须要知道的是,快门是有安全快门的,通常情况下是1/50秒,如果超过安全快门就可能会因为手抖而出现成像模糊的情况。

    所以拍夜景的时候,为了保证足够的进光量,同时又不超出安全快门,我们要么使用更大的光圈,要么提高ISO但是ISO越大,照片的信息损失越多,就会出现噪点。这也是为什么很多手机夜拍噪点太多的原因,但是大光圈的手机就不会有这种困扰

    景深

    什么是景深?简单来说,就是我们肉眼能够看清楚的部分。我们通常看到的主体清晰、背景模糊的照片,也就是我们所说的虚化,就是景深中的一种——浅景深效果。

    管是浅景深还是深景深,都和光圈有着莫大的关系。

    通常情况下,光圈越大,景深越浅,就会出现前景清晰背景模糊的效果;光圈越小,景深越深,即前景背景都很清晰。所以,大光圈的手机比起普通手机更能拍出一张文艺的浅景深照片。

    我们现在就以F/1.7大光圈的一加5为例,来看看大光圈手机摄影到底有多优秀。

    1) 浅景深效果。想要拍出浅景深的虚化效果,我们就需要使用到大光圈。

    2) 暗光拍照。大光圈可以在单位时间内进入更多的光线,在暗光环境中可以拍出更明亮的照片。

    3) 人像摄影。定焦大光圈是拍出优秀人像的必备条件,大光圈可以使人物主体更突出。

    4) 微距拍摄。在进行微距拍摄的时候,使用浅景深是必不可少的,这样微距主体才更加突出。



    还有一篇文章:http://academy.fengniao.com/534/5347791.html

    展开全文
  • 本文转载自程序员极客实验室 ...对于充满好奇心的人们来说,拿手机当显微显然是一个好主意,毕竟免去了花钱购入专业设备的麻烦。但爱折腾的我甚至不希望为此买一款新手机,自己搭建一个可不可以?..

    本文转载自程序员极客实验室

    手机的拍摄能力,是目前很多厂商打造差异化竞争力的重要方向。最近,一些以拍摄超远距离景物、清晰夜景能力见长的手机获得了人们的青睐。2021 年的旗舰手机中,又出现了 OPPO Find X3 这样带「显微镜」的异类,其主摄像头模组里面有一个镜头可以最多放大 60 倍,拍摄出日常事物中你以前从来无法想象的细节。

     

    图片

     

    对于充满好奇心的人们来说,拿手机当显微镜显然是一个好主意,毕竟免去了花钱购入专业设备的麻烦。但爱折腾的我甚至不希望为此买一款新手机,自己搭建一个可不可以?

     

    还真的不是问题,最近来自德国明斯特大学、哥廷根大学的研究者们探索出了一条用乐高积木搭建显微镜的方法,只需另找一个 iPhone5 级别的手机主摄像头就可以实现。

     

    经过测算,「手搓」一台乐高显微镜花费的成本只需要 102 欧元(约 800 元人民币),如果你不是淘宝买,而是直接拆旧手机上的摄像头还会更便宜。

     

    图片

     

    这几个研究者们把自己的方法公开在 GitHub 上,几天就获得了上百个点赞,还煞有介事地拿这件事写了一篇论文。

     

    图片

     

    论文链接:https://www.biorxiv.org/content/10.1101/2021.04.11.439311v1.full.pdf

     

    这样的材料和技术需求,看起来可比当初那位自造扫描隧道显微镜看原子的老哥简单很多了,你也不需要有博士学位跟高超的手艺才能 hold 住。

     

    根据使用镜头的情况,乐高显微镜的放大倍数不尽相同。但首先,微米尺度的微观成像显然不是问题:

     

    图片

    卤虫。

     

    图片

    洋葱表皮细胞。

     

    而且,作者们还强调了一点意义:显微镜是众多科学领域的必要工具,但由于成本等因素,显微镜的使用在教学课堂上是受限的。这项小发明或许可以让人们更多地去接触科学探索。

     

    搭建说明

     

    在动手之前,首先梳理一下需要的零件清单:

     

    图片

     

    成本的大头是散装乐高零件,预算在 80 欧元左右,此外还需要一个 iPhone 5 替代镜头、丙烯透镜、玻璃透镜、载玻片等。总价算下来 100 欧元左右,也就是不到 800 元人民币。

     

    由于乐高不提供光学元件,所以需要提前购买一些镜头零件,当前配置中使用了 3 种类型的附加镜头:

     

    • 目镜:使用两个简单的丙烯酸镜(直径 34.5 mm,f = 106 mm)作为目镜,并用胶带粘在一起;

    • 低倍率物镜:使用直径 18 mm、焦距 26.5 mm 的简单玻璃透镜,在这里也可以使用其他任何镜头,不过为了能够按照说明中的计划安装,请注意尺寸。

    • 高倍率物镜:此处使用了 iPhone 5 塑料镜头模块,基本上可以 2 到 4 欧元的价格买到。塑料镜头的缺点是,处理不当会迅速导致划痕,操作镜头时需要小心,因为镜头表面的划痕会干扰图像质量。

     

    图片

    和其他乐高积木一样,你可以按照说明书来逐步搭建。作者使用 LDraw 软件创建了说明书,如果你想要更改设计,也可以在项目地址中下载 CAD 文件进行再创作。

     

    图片

    (图注)乐高显微镜整体设计图。(c)是从下方照亮样本的 LED,(d)是通过移动物镜调整显微镜焦距的螺纹系统;(e)是两个物镜,包括一个焦距为 3.85mm 的替换智能手机镜头 (左) 和一个焦距为 26.5mm 的玻璃镜头(右) ; (f)由两个丙烯镜头组成; (g)是改装后的目镜,此处智能手机可以用作照相机。

     

    图片

     

    说明书 PDF 版:https://github.com/tobetz/LegoMicroscope/blob/main/Just_Plans_and_Parts/Mikroscope_plan.pdf

     

    从作者的说明中你可以看出来,这种显微镜是以标准的乐高积木堆叠方式完成的,没有特殊的魔改操作,即使其中夹杂手机摄像头这样的「科技组件」,其易于操作的程度也超乎了人们的想象。

     

    在对于显微镜的讨论中,有人赞叹于作者的创意,也有人指出其他科学家们使用乐高积木搭建出的各种科学仪器,包括光谱仪、地震仪、天平,甚至欧洲核子研究中心 CERN 的强子探测器。

     

    图片

    我借自己十岁儿子的乐高积木做强子探测器,它甚至可以经受高强度的放射性。它真的不是玩具。

     

    下一次想要研制什么科学仪器的时候,你可以先问问自己:能不能用乐高积木来做?

     

    展开全文
  • 苹果颠覆手机产业,微信颠覆通信业,特斯拉颠覆了汽车产业,趣拿社交电商颠覆了零售行业…一个产业中出现一匹奔腾的黑马时,产业中的巨头们不再敢像之前那样不屑和傲慢,而是谨慎的拿起放大镜仔细看了又看,生怕一...
  • 8、实现电商网站放大镜效果 9、实现鼠标滑过文字信息动态出现 10、CSS3实现鼠标滑过动态显示信息 11、数组方法实现图片随机打乱和顺序排序 12、鼠标滑过旋转显示图片信息 菜单按钮系列 1、实现扇形旋转飞进飞出...
  • 如何关闭自动连接手机传输图像? 耗电情况如何? 后期 capture one 后期 导入图片后不能编辑,所有的编辑图标都是灰色的 首选项-图像-打开JPEG编辑、打开tiff编辑、打开png编辑都勾上。 没找着 ...
  • 柯达Z8612中文说明书

    2009-08-18 00:14:12
    至于解决的办法其实也很简单,在镜头前再加个放大镜就可以了,效果确实还不错,6330的微距照样漂亮,更何况6340甚至更高档的呢? 第二个误区:柯达的LCD不好,在暗处亮点甚多,甚至EVF上也有亮点。 拍摄暗处时,...
  • 这里有一些想法:您可以使用pIRkey远程启动/停止程序,关闭计算机,控制远程安装的智能手机或平板电脑,进行自适应控制等。 USB连接器 左侧是PCB安装USB连接器,只需将其插入任何USB-A端口即可。 4个镀金焊盘具有...
  • java源码包---java 源码 大量 实例

    千次下载 热门讨论 2013-04-18 23:15:26
     用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...
  • java源码包2

    千次下载 热门讨论 2013-04-20 11:28:17
     用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...
  • java源码包3

    千次下载 热门讨论 2013-04-20 11:30:13
     用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...
  • java源码包4

    千次下载 热门讨论 2013-04-20 11:31:44
     用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...
  • Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 用户发送第一次请求的时候,验证...
  • Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 用户发送第一次请求的时候,验证...
  • Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 用户发送第一次请求的时候,验证...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...
  • ["图片", "图像", "通过观察", "数字图像", "几何图形", "脸部", "图象", "放大镜", "面孔", "Mii"], [0.597284, 0.580373, 0.568486, 0.535674, 0.531835, 0.530 095, 0.525344, 0.524009, 0.523101, 0.516046]) ...
  • 另外,在水果刀上面粘一个剪刀、起子、锯子、锉刀、牙签、指南针、尺子、放大镜……我估计也不会太好用(不叫“瑞士军刀”,叫“超级武器霸王3000”)。 2.看《Thinking In C++》,不要看《C++变成死相》; 新...
  • 另外,在水果刀上面粘一个剪刀、起子、锯子、锉刀、牙签、指南针、尺子、放大镜……我估计也不会太好用(不叫“瑞士军刀”,叫“超级武器霸王3000”)。 2.看《Thinking In C++》,不要看《C++变成死相》; 新...
  • 另外,在水果刀上面粘一个剪刀、起子、锯子、锉刀、牙签、指南针、尺子、放大镜……我估计也不会太好用(不叫“瑞士军刀”,叫“超级武器霸王3000”)。 2.看《Thinking In C++》,不要看《C++变成死相》; 新...
  • 另外,在水果刀上面粘一个剪刀、起子、锯子、锉刀、牙签、指南针、尺子、放大镜……我估计也不会太好用(不叫“瑞士军刀”,叫“超级武器霸王3000”)。 2.看《Thinking In C++》,不要看《C++变成死相》; 新...
  • vc++ 应用源码包_1

    热门讨论 2012-09-15 14:22:12
    独立打包,保证可解压,内含大量源码,网上搜集而来。 Visual.C++编程技巧精选500例源代码 内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、...
  • vc++ 应用源码包_2

    热门讨论 2012-09-15 14:27:40
    独立打包,保证可解压,内含大量源码,网上搜集而来。 Visual.C++编程技巧精选500例源代码 内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、...
  • vc++ 应用源码包_6

    热门讨论 2012-09-15 14:59:46
    独立打包,保证可解压,内含大量源码,网上搜集而来。一共10几包,每个包几十兆。 Visual.C++编程技巧精选500例源代码 内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序...
  • vc++ 应用源码包_5

    热门讨论 2012-09-15 14:45:16
    独立打包,保证可解压,内含大量源码,网上搜集而来。一共10几包,每个包几十兆。 Visual.C++编程技巧精选500例源代码 内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序...
  • vc++ 应用源码包_4

    热门讨论 2012-09-15 14:38:35
    独立打包,保证可解压,内含大量源码,网上搜集而来。 Visual.C++编程技巧精选500例源代码 内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、...
  • vc++ 应用源码包_3

    热门讨论 2012-09-15 14:33:15
    独立打包,保证可解压,内含大量源码,网上搜集而来。 Visual.C++编程技巧精选500例源代码 内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、...

空空如也

空空如也

1 2
收藏数 33
精华内容 13
关键字:

手机当放大镜